commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] [gnuradio] 05/57: codec2 library update


From: git
Subject: [Commit-gnuradio] [gnuradio] 05/57: codec2 library update
Date: Wed, 21 May 2014 03:10:23 +0000 (UTC)

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

trondeau pushed a commit to branch master
in repository gnuradio.

commit b31467427ab5d10d58ea2c4b330271159564ad85
Author: A. Maitland Bottoms <address@hidden>
Date:   Mon Apr 7 23:41:28 2014 -0400

    codec2 library update
---
 gr-vocoder/lib/codec2/CMakeLists.txt           |  112 +-
 gr-vocoder/lib/codec2/ampexp.c                 | 1093 ++++
 gr-vocoder/lib/codec2/{phase.h => ampexp.h}    |   23 +-
 gr-vocoder/lib/codec2/c2dec.c                  |  199 +-
 gr-vocoder/lib/codec2/c2demo.c                 |   38 +-
 gr-vocoder/lib/codec2/c2enc.c                  |   71 +-
 gr-vocoder/lib/codec2/c2sim.c                  | 1131 +++-
 gr-vocoder/lib/codec2/codebook/dlsp1.txt       |   20 +-
 gr-vocoder/lib/codec2/codebook/dlsp10.txt      |   28 +-
 gr-vocoder/lib/codec2/codebook/dlsp2.txt       |   20 +-
 gr-vocoder/lib/codec2/codebook/dlsp3.txt       |   30 +-
 gr-vocoder/lib/codec2/codebook/dlsp4.txt       |   32 +-
 gr-vocoder/lib/codec2/codebook/dlsp5.txt       |   32 +-
 gr-vocoder/lib/codec2/codebook/dlsp6.txt       |   32 +-
 gr-vocoder/lib/codec2/codebook/dlsp7.txt       |   28 +-
 gr-vocoder/lib/codec2/codebook/dlsp8.txt       |   28 +-
 gr-vocoder/lib/codec2/codebook/dlsp9.txt       |   28 +-
 gr-vocoder/lib/codec2/codebook/gecb.txt        |  257 +
 gr-vocoder/lib/codec2/codebook/lsp45678910.txt | 4097 ++++++++++++
 gr-vocoder/lib/codec2/codebook/lsp8910.txt     |   65 -
 gr-vocoder/lib/codec2/codebook/lspdt1.txt      |    9 +
 gr-vocoder/lib/codec2/codebook/lspdt10.txt     |    3 +
 gr-vocoder/lib/codec2/codebook/lspdt2.txt      |    9 +
 gr-vocoder/lib/codec2/codebook/lspdt3.txt      |    5 +
 gr-vocoder/lib/codec2/codebook/lspdt4.txt      |    5 +
 gr-vocoder/lib/codec2/codebook/lspdt5.txt      |    5 +
 gr-vocoder/lib/codec2/codebook/lspdt6.txt      |    5 +
 gr-vocoder/lib/codec2/codebook/lspdt7.txt      |    3 +
 gr-vocoder/lib/codec2/codebook/lspdt8.txt      |    3 +
 gr-vocoder/lib/codec2/codebook/lspdt9.txt      |    3 +
 gr-vocoder/lib/codec2/codebook/lspjnd5-10.txt  | 8317 ++++++++++++++++++++++++
 gr-vocoder/lib/codec2/codebook/lspjvm1.txt     |  513 ++
 gr-vocoder/lib/codec2/codebook/lspjvm2.txt     |  513 ++
 gr-vocoder/lib/codec2/codebook/lspjvm3.txt     |  513 ++
 gr-vocoder/lib/codec2/codebook/lspvqanssi1.txt |  257 +
 gr-vocoder/lib/codec2/codebook/lspvqanssi2.txt |  129 +
 gr-vocoder/lib/codec2/codebook/lspvqanssi3.txt |   65 +
 gr-vocoder/lib/codec2/codebook/lspvqanssi4.txt |   65 +
 gr-vocoder/lib/codec2/codec2.c                 | 1385 +++-
 gr-vocoder/lib/codec2/codec2.h                 |   54 +-
 gr-vocoder/lib/codec2/codec2_fdmdv.h           |  124 +
 gr-vocoder/lib/codec2/{nlp.h => codec2_fifo.h} |   36 +-
 gr-vocoder/lib/codec2/codec2_internal.h        |   71 +-
 gr-vocoder/lib/codec2/defines.h                |   12 +-
 gr-vocoder/lib/codec2/dump.c                   |  212 +-
 gr-vocoder/lib/codec2/dump.h                   |   12 +-
 gr-vocoder/lib/codec2/fdmdv.c                  | 1569 +++++
 gr-vocoder/lib/codec2/fdmdv_internal.h         |  176 +
 gr-vocoder/lib/codec2/fft.c                    |  101 -
 gr-vocoder/lib/codec2/fft.h                    |   16 -
 gr-vocoder/lib/codec2/fifo.c                   |  142 +
 gr-vocoder/lib/codec2/fq20.sh                  |    8 -
 gr-vocoder/lib/codec2/hanning.h                |  644 ++
 gr-vocoder/lib/codec2/interp.c                 |  397 +-
 gr-vocoder/lib/codec2/interp.h                 |   14 +-
 gr-vocoder/lib/codec2/listensim.sh             |    9 -
 gr-vocoder/lib/codec2/lpc.c                    |   94 +-
 gr-vocoder/lib/codec2/lpc.h                    |    5 +-
 gr-vocoder/lib/codec2/lsp.c                    |    2 +-
 gr-vocoder/lib/codec2/machdep.h                |   51 +
 gr-vocoder/lib/codec2/nlp.c                    |  285 +-
 gr-vocoder/lib/codec2/nlp.h                    |    7 +-
 gr-vocoder/lib/codec2/os.h                     |   53 +
 gr-vocoder/lib/codec2/pack.c                   |   22 +-
 gr-vocoder/lib/codec2/phase.c                  |  123 +-
 gr-vocoder/lib/codec2/phase.h                  |    7 +-
 gr-vocoder/lib/codec2/phaseexp.c               | 1455 +++++
 gr-vocoder/lib/codec2/{phase.h => phaseexp.h}  |   21 +-
 gr-vocoder/lib/codec2/pilot_coeff.h            |   34 +
 gr-vocoder/lib/codec2/postfilter.c             |   21 +-
 gr-vocoder/lib/codec2/quantise.c               | 1975 ++++--
 gr-vocoder/lib/codec2/quantise.h               |  101 +-
 gr-vocoder/lib/codec2/rn.h                     |  964 +++
 gr-vocoder/lib/codec2/sim.sh                   |   22 -
 gr-vocoder/lib/codec2/sine.c                   |  136 +-
 gr-vocoder/lib/codec2/sine.h                   |   12 +-
 gr-vocoder/lib/codec2/test_bits.h              |  164 +
 77 files changed, 26505 insertions(+), 1817 deletions(-)

diff --git a/gr-vocoder/lib/codec2/CMakeLists.txt 
b/gr-vocoder/lib/codec2/CMakeLists.txt
index f4ccd22..ac25b7c 100644
--- a/gr-vocoder/lib/codec2/CMakeLists.txt
+++ b/gr-vocoder/lib/codec2/CMakeLists.txt
@@ -73,20 +73,101 @@ add_custom_command(
 )
 
 ########################################################################
-# Create codebookdvq
+# Create codebookvq
 ########################################################################
-set(CODEBOOKSDVQ
-    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/dlsp1.txt
-    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/dlsp2.txt
-    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/dlsp3.txt
-    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/dlsp4.txt
-    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/dlsp5.txt
+set(CODEBOOKSVQ
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lsp1.txt
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lsp2.txt
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lsp3.txt
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lsp4.txt
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lsp45678910.txt
+)
+
+add_custom_command(
+    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookvq.c
+    DEPENDS generate_codebook ${CODEBOOKSVQ}
+    COMMAND generate_codebook lsp_cbvq ${CODEBOOKSVQ} > 
${CMAKE_CURRENT_BINARY_DIR}/codebookvq.c
+)
+
+########################################################################
+# Create codebookjnd
+########################################################################
+set(CODEBOOKSJND
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lsp1.txt
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lsp2.txt
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lsp3.txt
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lsp4.txt
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspjnd5-10.txt
+)
+
+add_custom_command(
+    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookjnd.c
+    DEPENDS generate_codebook ${CODEBOOKSJND}
+    COMMAND generate_codebook lsp_cbjnd ${CODEBOOKSJND} > 
${CMAKE_CURRENT_BINARY_DIR}/codebookjnd.c
+)
+
+########################################################################
+# Create codebookjvm
+########################################################################
+set(CODEBOOKSJVM
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspjvm1.txt
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspjvm2.txt
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspjvm3.txt
+)
+
+add_custom_command(
+    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookjvm.c
+    DEPENDS generate_codebook ${CODEBOOKSJVM}
+    COMMAND generate_codebook lsp_cbjvm ${CODEBOOKSJVM} > 
${CMAKE_CURRENT_BINARY_DIR}/codebookjvm.c
+)
+
+########################################################################
+# Create codebookvqanssi
+########################################################################
+set(CODEBOOKSVQANSSI
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspvqanssi1.txt
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspvqanssi2.txt
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspvqanssi3.txt
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspvqanssi4.txt
+)
+
+add_custom_command(
+    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookvqanssi.c
+    DEPENDS generate_codebook ${CODEBOOKSVQANSSI}
+    COMMAND generate_codebook lsp_cbvqanssi ${CODEBOOKSVQANSSI} > 
${CMAKE_CURRENT_BINARY_DIR}/codebookvqanssi.c
+)
+
+########################################################################
+# Create codebookdt
+########################################################################
+set(CODEBOOKSDT
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspdt1.txt
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspdt2.txt
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspdt3.txt
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspdt4.txt
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspdt5.txt
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspdt6.txt
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspdt7.txt
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspdt8.txt
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspdt9.txt
+    ${CMAKE_CURRENT_SOURCE_DIR}/codebook/lspdt10.txt
+)
+
+add_custom_command(
+    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookdt.c
+    DEPENDS generate_codebook ${CODEBOOKSDT}
+    COMMAND generate_codebook lsp_cbdt ${CODEBOOKSDT} > 
${CMAKE_CURRENT_BINARY_DIR}/codebookdt.c
 )
 
+########################################################################
+# Create codebookge
+########################################################################
+set(CODEBOOKSGE ${CMAKE_CURRENT_SOURCE_DIR}/codebook/gecb.txt)
+
 add_custom_command(
-    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookdvq.c
-    DEPENDS generate_codebook ${CODEBOOKSDVQ}
-    COMMAND generate_codebook lsp_cbdvq ${CODEBOOKSDVQ} > 
${CMAKE_CURRENT_BINARY_DIR}/codebookdvq.c
+    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/codebookge.c
+    DEPENDS generate_codebook ${CODEBOOKSGE}
+    COMMAND generate_codebook ge_cb ${CODEBOOKSGE} > 
${CMAKE_CURRENT_BINARY_DIR}/codebookge.c
 )
 
 ########################################################################
@@ -95,7 +176,13 @@ add_custom_command(
 list(APPEND gr_vocoder_sources
     ${CMAKE_CURRENT_BINARY_DIR}/codebook.c
     ${CMAKE_CURRENT_BINARY_DIR}/codebookd.c
-    ${CMAKE_CURRENT_BINARY_DIR}/codebookdvq.c
+    ${CMAKE_CURRENT_BINARY_DIR}/codebookvq.c
+    ${CMAKE_CURRENT_BINARY_DIR}/codebookjnd.c
+    ${CMAKE_CURRENT_BINARY_DIR}/codebookjvm.c
+    ${CMAKE_CURRENT_BINARY_DIR}/codebookvqanssi.c
+    ${CMAKE_CURRENT_BINARY_DIR}/codebookdt.c
+    ${CMAKE_CURRENT_BINARY_DIR}/codebookge.c
+
 
     ${CMAKE_CURRENT_SOURCE_DIR}/dump.c
     ${CMAKE_CURRENT_SOURCE_DIR}/lpc.c
@@ -103,7 +190,8 @@ list(APPEND gr_vocoder_sources
     ${CMAKE_CURRENT_SOURCE_DIR}/postfilter.c
     ${CMAKE_CURRENT_SOURCE_DIR}/sine.c
     ${CMAKE_CURRENT_SOURCE_DIR}/codec2.c
-    ${CMAKE_CURRENT_SOURCE_DIR}/fft.c
+    ${CMAKE_CURRENT_SOURCE_DIR}/fifo.c
+    ${CMAKE_CURRENT_SOURCE_DIR}/fdmdv.c
     ${CMAKE_CURRENT_SOURCE_DIR}/kiss_fft.c
     ${CMAKE_CURRENT_SOURCE_DIR}/interp.c
     ${CMAKE_CURRENT_SOURCE_DIR}/lsp.c
diff --git a/gr-vocoder/lib/codec2/ampexp.c b/gr-vocoder/lib/codec2/ampexp.c
new file mode 100644
index 0000000..ccec6dc
--- /dev/null
+++ b/gr-vocoder/lib/codec2/ampexp.c
@@ -0,0 +1,1093 @@
+/*---------------------------------------------------------------------------*\
+
+  FILE........: ampexp.c
+  AUTHOR......: David Rowe
+  DATE CREATED: 7 August 2012
+
+  Functions for experimenting with amplitude quantisation.
+
+\*---------------------------------------------------------------------------*/
+
+/*
+  Copyright (C) 2012 David Rowe
+
+  All rights reserved.
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU Lesser General Public License version 2.1, as
+  published by the Free Software Foundation.  This program is
+  distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or
+  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+  License for more details.
+
+  You should have received a copy of the GNU Lesser General Public License
+  along with this program; if not,see <http://www.gnu.org/licenses/>.
+*/
+
+
+#include <assert.h>
+#include <ctype.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "ampexp.h"
+
+
+#define PRED_COEFF 0.9
+
+/* states for amplitude experiments */
+
+struct codebook {
+    unsigned int        k;
+    unsigned int        log2m;
+    unsigned int        m;
+    float               *cb;
+    unsigned int         offset;
+};
+
+struct AEXP {
+    float            A_prev[MAX_AMP];
+    int              frames;
+    float            snr;
+    int              snr_n;
+    float            var;
+    int              var_n;
+    float            vq_var;
+    int              vq_var_n;
+    struct codebook *vq1,*vq2,*vq3,*vq4,*vq5;
+
+    int              indexes[5][3];
+    MODEL            model[3];
+    float            mag[3];
+    MODEL            model_uq[3];
+};
+
+
+/*---------------------------------------------------------------------------*\
+
+  Bruce Perens' funcs to load codebook files
+
+\*---------------------------------------------------------------------------*/
+
+
+static const char format[] =
+"The table format must be:\n"
+"\tTwo integers describing the dimensions of the codebook.\n"
+"\tThen, enough numbers to fill the specified dimensions.\n";
+
+static float get_float(FILE * in, const char * name, char * * cursor, char * 
buffer, int size)
+{
+  for ( ; ; ) {
+    char *     s = *cursor;
+    char       c;
+
+    while ( (c = *s) != '\0' && !isdigit(c) && c != '-' && c != '.' )
+      s++;
+
+    /* Comments start with "#" and continue to the end of the line. */
+    if ( c != '\0' && c != '#' ) {
+      char *   end = 0;
+      float    f = 0;
+
+      f = strtod(s, &end);
+
+      if ( end != s )
+        *cursor = end;
+        return f;
+    }
+
+    if ( fgets(buffer, size, in) == NULL ) {
+      fprintf(stderr, "%s: Format error. %s\n", name, format);
+      exit(1);
+    }
+    *cursor = buffer;
+  }
+}
+
+static struct codebook *load(const char * name)
+{
+    FILE               *file;
+    char               line[2048];
+    char               *cursor = line;
+    struct codebook    *b = malloc(sizeof(struct codebook));
+    int                        i;
+    int                        size;
+
+    file = fopen(name, "rt");
+    assert(file != NULL);
+
+    *cursor = '\0';
+
+    b->k = (int)get_float(file, name, &cursor, line, sizeof(line));
+    b->m = (int)get_float(file, name ,&cursor, line, sizeof(line));
+    size = b->k * b->m;
+
+    b->cb = (float *)malloc(size * sizeof(float));
+
+    for ( i = 0; i < size; i++ ) {
+       b->cb[i] = get_float(file, name, &cursor, line, sizeof(line));
+    }
+
+    fclose(file);
+
+    return b;
+}
+
+
+/*---------------------------------------------------------------------------* 
\
+
+  amp_experiment_create()
+
+  Inits states for amplitude quantisation experiments.
+
+\*---------------------------------------------------------------------------*/
+
+struct AEXP *amp_experiment_create() {
+    struct AEXP *aexp;
+    int i,j,m;
+
+    aexp = (struct AEXP *)malloc(sizeof(struct AEXP));
+    assert (aexp != NULL);
+
+    for(i=0; i<MAX_AMP; i++)
+       aexp->A_prev[i] = 1.0;
+    aexp->frames = 0;
+    aexp->snr = 0.0;
+    aexp->snr_n = 0;
+    aexp->var = 0.0;
+    aexp->var_n = 0;
+    aexp->vq_var = 0.0;
+    aexp->vq_var_n = 0;
+
+    //aexp->vq1 = load("amp_1_80_1024a.txt");
+    //aexp->vq1 = load("../unittest/st1_10_1024.txt");
+    //aexp->vq1 = load("../unittest/amp41_80_1024.txt");
+    //aexp->vq1->offset = 40;
+    aexp->vq1 = load("../unittest/amp1_10_1024.txt");
+    aexp->vq1->offset = 0;
+    aexp->vq2 = load("../unittest/amp11_20_1024.txt");
+    aexp->vq2->offset = 10;
+
+    aexp->vq3 = load("../unittest/amp21_40_1024.txt");
+    aexp->vq3->offset = 20;
+    aexp->vq4 = load("../unittest/amp41_60_1024.txt");
+    aexp->vq4->offset = 40;
+    aexp->vq5 = load("../unittest/amp61_80_256.txt");
+    aexp->vq5->offset = 60;
+
+    #ifdef CAND2_GS
+    //aexp->vq1 = load("../unittest/t1_amp1_20_1024.txt");
+    //aexp->vq1 = load("../unittest/t2_amp1_20_1024.txt");
+    aexp->vq1 = load("../unittest/amp1_20_1024.txt");
+    aexp->vq1->offset = 0;
+    aexp->vq2 = load("../unittest/amp21_40_1024.txt");
+    aexp->vq2->offset = 20;
+    aexp->vq3 = load("../unittest/amp41_60_1024.txt");
+    aexp->vq3->offset = 40;
+    aexp->vq4 = load("../unittest/amp61_80_32.txt");
+    aexp->vq4->offset = 60;
+    #endif
+
+    //#define CAND2_GS
+    #ifdef CAND2_GS
+    aexp->vq1 = load("../unittest/amp1_20_1024.txt");
+    aexp->vq2 = load("../unittest/amp21_40_1024.txt");
+    aexp->vq3 = load("../unittest/amp41_80_1024.txt");
+    aexp->vq4 = load("../unittest/amp61_80_32.txt");
+    aexp->vq1->offset = 0;
+    aexp->vq2->offset = 20;
+    aexp->vq3->offset = 40;
+    aexp->vq4->offset = 60;
+    #endif
+
+    //#define CAND1
+    #ifdef CAND1
+    aexp->vq1 = load("../unittest/amp1_10_128.txt");
+    aexp->vq2 = load("../unittest/amp11_20_512.txt");
+    aexp->vq3 = load("../unittest/amp21_40_1024.txt");
+    aexp->vq4 = load("../unittest/amp41_60_1024.txt");
+    aexp->vq5 = load("../unittest/amp61_80_32.txt");
+    aexp->vq1->offset = 0;
+    aexp->vq2->offset = 10;
+    aexp->vq3->offset = 20;
+    aexp->vq4->offset = 40;
+    aexp->vq5->offset = 60;
+    #endif
+
+    for(i=0; i<3; i++) {
+       for(j=0; j<5; j++)
+           aexp->indexes[j][i] = 0;
+       aexp->mag[i] = 1.0;
+       aexp->model[i].Wo = TWO_PI*100.0/8000.0;
+       aexp->model[i].L = floor(PI/aexp->model[i].Wo);
+       for(m=1; m<=MAX_AMP; m++)
+           aexp->model[i].A[m] = 10.0;
+       aexp->model_uq[i] = aexp->model[i];
+    }
+
+    return aexp;
+}
+
+
+/*---------------------------------------------------------------------------* 
\
+
+  amp_experiment_destroy()
+
+\*---------------------------------------------------------------------------*/
+
+void amp_experiment_destroy(struct AEXP *aexp) {
+    assert(aexp != NULL);
+    if (aexp->snr != 0.0)
+       printf("snr: %4.2f dB\n", aexp->snr/aexp->snr_n);
+    if (aexp->var != 0.0)
+       printf("var...: %4.3f  std dev...: %4.3f (%d amplitude samples)\n",
+              aexp->var/aexp->var_n, sqrt(aexp->var/aexp->var_n), aexp->var_n);
+    if (aexp->vq_var != 0.0)
+       printf("vq var: %4.3f  std dev...: %4.3f (%d amplitude samples)\n",
+              aexp->vq_var/aexp->vq_var_n, sqrt(aexp->vq_var/aexp->vq_var_n), 
aexp->vq_var_n);
+    free(aexp);
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+  Various test and experimental functions ................
+
+\*---------------------------------------------------------------------------*/
+
+/*
+  Quantisation noise simulation.  Assume noise on amplitudes is a uniform
+  distribution, of +/- x dB.  This means x = sqrt(3)*sigma.
+
+  Note: for uniform distribution var = = sigma * sigma = (b-a)*(b-a)/12.
+*/
+
+static void add_quant_noise(struct AEXP *aexp, MODEL *model, int start, int 
end, float sigma_dB)
+{
+    int   m;
+    float x_dB;
+    float noise_sam_dB;
+    float noise_sam_lin;
+
+    x_dB = sqrt(3.0) * sigma_dB;
+
+    for(m=start; m<=end; m++) {
+       noise_sam_dB = x_dB*(1.0 - 2.0*rand()/RAND_MAX);
+       //printf("%f\n", noise_sam_dB);
+       noise_sam_lin = pow(10.0, noise_sam_dB/20.0);
+       model->A[m] *= noise_sam_lin;
+       aexp->var += noise_sam_dB*noise_sam_dB;
+       aexp->var_n++;
+    }
+
+}
+
+/*
+  void print_sparse_pred_error()
+
+  use to check pred error stats (e.g. of first 1kHz) in Octave:
+
+     $ ./c2sim ../raw/hts1a.raw --ampexp > amppe.txt
+
+     octave> load ../src/amppe.txt
+     octave> std(nonzeros(amppe(:,1:20)))
+     octave> hist(nonzeros(amppe(:,1:20)),20);
+
+ */
+
+
+static void print_sparse_pred_error(struct AEXP *aexp, MODEL *model, float 
mag_thresh)
+{
+    int    m, index;
+    float  mag, error;
+    float  sparse_pe[MAX_AMP];
+
+    mag = 0.0;
+    for(m=1; m<=model->L; m++)
+       mag += model->A[m]*model->A[m];
+    mag = 10*log10(mag/model->L);
+
+    if (mag > mag_thresh) {
+       for(m=0; m<MAX_AMP; m++) {
+           sparse_pe[m] = 0.0;
+       }
+
+       for(m=1; m<=model->L; m++) {
+           assert(model->A[m] > 0.0);
+           error = PRED_COEFF*20.0*log10(aexp->A_prev[m]) - 
20.0*log10(model->A[m]);
+           //error = 20.0*log10(model->A[m]) - mag;
+
+           index = MAX_AMP*m*model->Wo/PI;
+           assert(index < MAX_AMP);
+           sparse_pe[index] = error;
+       }
+
+       /* dump sparse amp vector */
+
+       for(m=0; m<MAX_AMP; m++)
+           printf("%f ", sparse_pe[m]);
+       printf("\n");
+    }
+}
+
+
+static float frame_energy(MODEL *model, float *enormdB) {
+    int   m;
+    float e, edB;
+
+    e = 0.0;
+    for(m=1; m<=model->L; m++)
+       e += model->A[m]*model->A[m];
+    edB = 10*log10(e);
+
+    #define VER_E0
+
+    #ifdef VER_E0
+    *enormdB = 10*log10(e/model->L); /* make high and low pitches have similar 
amps */
+    #endif
+
+    #ifdef VER_E1
+    e = 0.0;
+    for(m=1; m<=model->L; m++)
+       e += 10*log10(model->A[m]*model->A[m]);
+    *enormdB = e;
+    #endif
+
+    #ifdef VER_E2
+    e = 0.0;
+    for(m=1; m<=model->L; m++)
+       e += 10*log10(model->A[m]*model->A[m]);
+    *enormdB = e/model->L;
+    #endif
+    //printf("%f\n", enormdB);
+
+    return edB;
+}
+
+static void print_sparse_amp_error(struct AEXP *aexp, MODEL *model, float 
edB_thresh)
+{
+    int    m, index;
+    float  edB, enormdB, error, dWo;
+    float  sparse_pe[MAX_AMP];
+
+    edB = frame_energy(model, &enormdB);
+    //printf("%f\n", enormdB);
+    dWo = fabs((aexp->model_uq[2].Wo - 
aexp->model_uq[1].Wo)/aexp->model_uq[2].Wo);
+
+    if ((edB > edB_thresh) && (dWo < 0.1)) {
+       for(m=0; m<MAX_AMP; m++) {
+           sparse_pe[m] = 0.0;
+       }
+
+       for(m=1; m<=model->L; m++) {
+           assert(model->A[m] > 0.0);
+           error = 20.0*log10(model->A[m]) - enormdB;
+
+           index = MAX_AMP*m*model->Wo/PI;
+           assert(index < MAX_AMP);
+           sparse_pe[index] = error;
+       }
+
+       /* dump sparse amp vector */
+
+       for(m=0; m<MAX_AMP; m++)
+           printf("%f ", sparse_pe[m]);
+       printf("\n");
+    }
+}
+
+
+int vq_amp(float cb[], float vec[], float weights[], int d, int e, float *se)
+{
+   float   error;      /* current error                */
+   int     besti;      /* best index so far            */
+   float   best_error; /* best error so far            */
+   int    i,j;
+   float   diff, metric, best_metric;
+
+   besti = 0;
+   best_metric = best_error = 1E32;
+   for(j=0; j<e; j++) {
+       metric = error = 0.0;
+       for(i=0; i<d; i++) {
+          if (vec[i] != 0.0) {
+              diff = (cb[j*d+i] - vec[i]);
+              error += diff*diff;
+              metric += weights[i]*diff*diff;
+          }
+       }
+       if (metric < best_metric) {
+          best_error = error;
+          best_metric = metric;
+          besti = j;
+       }
+   }
+
+   *se += best_error;
+
+   return(besti);
+}
+
+
+static int split_vq(float sparse_pe_out[], struct AEXP *aexp, struct codebook 
*vq, float weights[], float sparse_pe_in[])
+{
+    int i, j, non_zero, vq_ind;
+    float se;
+
+    vq_ind = vq_amp(vq->cb, &sparse_pe_in[vq->offset], &weights[vq->offset], 
vq->k, vq->m, &se);
+    printf("\n offset %d k %d m %d vq_ind %d j: ", vq->offset, vq->k, vq->m, 
vq_ind);
+
+    non_zero = 0;
+    for(i=0, j=vq->offset; i<vq->k; i++,j++) {
+       if (sparse_pe_in[j] != 0.0) {
+           printf("%d ", j);
+           sparse_pe_in[j]  -= vq->cb[vq->k * vq_ind + i];
+           sparse_pe_out[j] += vq->cb[vq->k * vq_ind + i];
+           non_zero++;
+       }
+    }
+    aexp->vq_var_n += non_zero;
+    return vq_ind;
+}
+
+
+static void sparse_vq_pred_error(struct AEXP *aexp,
+                                MODEL       *model
+)
+{
+    int    m, index;
+    float  error, amp_dB, edB, enormdB;
+    float  sparse_pe_in[MAX_AMP];
+    float  sparse_pe_out[MAX_AMP];
+    float  weights[MAX_AMP];
+
+    edB = frame_energy(model, &enormdB);
+
+    for(m=0; m<MAX_AMP; m++) {
+       sparse_pe_in[m] = 0.0;
+       sparse_pe_out[m] = 0.0;
+    }
+
+    for(m=1; m<=model->L; m++) {
+       assert(model->A[m] > 0.0);
+       error = PRED_COEFF*20.0*log10(aexp->A_prev[m]) - 
20.0*log10(model->A[m]);
+
+       index = MAX_AMP*m*model->Wo/PI;
+       assert(index < MAX_AMP);
+       sparse_pe_in[index] = error;
+       weights[index] = model->A[m];
+    }
+
+    /* vector quantise */
+
+    for(m=0; m<MAX_AMP; m++) {
+       sparse_pe_out[m] = sparse_pe_in[m];
+    }
+
+    //#define SIM_VQ
+    #ifndef SIM_VQ
+    split_vq(sparse_pe_out, aexp, aexp->vq1, weights, sparse_pe_in);
+    #else
+    for(m=aexp->vq->offset; m<aexp->vq->offset+aexp->vq->k; m++) {
+       if (sparse_pe_in[m] != 0.0) {
+           float error = 8*(1.0 - 2.0*rand()/RAND_MAX);
+           aexp->vq_var += error*error;
+           aexp->vq_var_n++;
+           sparse_pe_out[m] = sparse_pe_in[m] + error;
+       }
+    }
+    #endif
+
+    if (edB > -100.0)
+       for(m=0; m<MAX_AMP; m++) {
+           if (sparse_pe_in[m] != 0.0)
+               aexp->vq_var += pow(sparse_pe_out[m] - sparse_pe_in[m], 2.0);
+       }
+
+    /* transform quantised amps back */
+
+    for(m=1; m<=model->L; m++) {
+       index = MAX_AMP*m*model->Wo/PI;
+       assert(index < MAX_AMP);
+       amp_dB = PRED_COEFF*20.0*log10(aexp->A_prev[m]) - sparse_pe_out[index];
+       //printf("in: %f  out: %f\n", sparse_pe_in[index], 
sparse_pe_out[index]);
+       //printf("amp_dB: %f A[m] (dB) %f\n", amp_dB, 20.0*log10(model->A[m]));
+       model->A[m] = pow(10.0, amp_dB/20.0);
+    }
+    //exit(0);
+}
+
+
+static void split_error(struct AEXP *aexp, struct codebook *vq, float 
sparse_pe_in[], int ind)
+{
+    int i, j;
+
+    for(i=0, j=vq->offset; i<vq->k; i++,j++) {
+       if (sparse_pe_in[j] != 0.0) {
+           sparse_pe_in[j] -= vq->cb[vq->k * ind + i];
+       }
+    }
+}
+
+
+static void sparse_vq_amp(struct AEXP *aexp, MODEL *model)
+{
+    int    m, index;
+    float  error, amp_dB, enormdB;
+    float  sparse_pe_in[MAX_AMP];
+    float  sparse_pe_out[MAX_AMP];
+    float  weights[MAX_AMP];
+
+    frame_energy(model, &enormdB);
+
+    aexp->mag[2] = enormdB;
+
+    for(m=0; m<MAX_AMP; m++) {
+       sparse_pe_in[m] = 0.0;
+       sparse_pe_out[m] = 0.0;
+    }
+
+    for(m=1; m<=model->L; m++) {
+       assert(model->A[m] > 0.0);
+       error = 20.0*log10(model->A[m]) - enormdB;
+
+       index = MAX_AMP*m*model->Wo/PI;
+       assert(index < MAX_AMP);
+       sparse_pe_in[index] = error;
+       weights[index] = pow(model->A[m],0.8);
+    }
+
+    /* vector quantise */
+
+    for(m=0; m<MAX_AMP; m++) {
+       sparse_pe_out[m] = sparse_pe_in[m];
+    }
+
+    for(m=0; m<80; m++)
+       sparse_pe_out[m] = 0;
+
+    #define SPLIT
+    #ifdef SPLIT
+    aexp->indexes[0][2] = split_vq(sparse_pe_out, aexp, aexp->vq1, weights, 
sparse_pe_in);
+
+    aexp->indexes[1][2] = split_vq(sparse_pe_out, aexp, aexp->vq2, weights, 
sparse_pe_in);
+    aexp->indexes[2][2] = split_vq(sparse_pe_out, aexp, aexp->vq3, weights, 
sparse_pe_in);
+    aexp->indexes[3][2] = split_vq(sparse_pe_out, aexp, aexp->vq4, weights, 
sparse_pe_in);
+    aexp->indexes[4][2] = split_vq(sparse_pe_out, aexp, aexp->vq5, weights, 
sparse_pe_in);
+    #endif
+    //#define MULTISTAGE
+    #ifdef MULTISTAGE
+    aexp->indexes[0][2] = split_vq(sparse_pe_out, aexp, aexp->vq1, weights, 
sparse_pe_in);
+    aexp->indexes[1][2] = split_vq(sparse_pe_out, aexp, aexp->vq2, weights, 
sparse_pe_in);
+    aexp->indexes[2][2] = split_vq(sparse_pe_out, aexp, aexp->vq3, weights, 
sparse_pe_in);
+    //aexp->indexes[3][2] = split_vq(sparse_pe_out, aexp, aexp->vq4, weights, 
sparse_pe_in);
+    #endif
+
+    for(m=0; m<MAX_AMP; m++) {
+       if (sparse_pe_in[m] != 0.0)
+           aexp->vq_var += pow(sparse_pe_out[m] - sparse_pe_in[m], 2.0);
+    }
+
+    /* transform quantised amps back */
+
+    for(m=1; m<=model->L; m++) {
+       index = MAX_AMP*m*model->Wo/PI;
+       assert(index < MAX_AMP);
+       amp_dB = sparse_pe_out[index] + enormdB;
+       model->A[m] = pow(10.0, amp_dB/20.0);
+    }
+    //exit(0);
+}
+
+
+static void update_snr_calc(struct AEXP *aexp, MODEL *m1, MODEL *m2)
+{
+    int m;
+    float signal, noise, signal_dB;
+
+    assert(m1->L == m2->L);
+
+    signal = 0.0; noise = 1E-32;
+    for(m=1; m<=m1->L; m++) {
+       signal += m1->A[m]*m1->A[m];
+       noise  += pow(m1->A[m] - m2->A[m], 2.0);
+       //printf("%f %f\n", before[m], model->phi[m]);
+    }
+    signal_dB = 10*log10(signal);
+    if (signal_dB > -100.0) {
+       aexp->snr += 10.0*log10(signal/noise);
+       aexp->snr_n++;
+    }
+}
+
+
+/* gain/shape vq search.  Returns index of best gain.  Gain is additive (as we 
use log quantisers) */
+
+int gain_shape_vq_amp(float cb[], float vec[], float weights[], int d, int e, 
float *se, float *best_gain)
+{
+   float   error;      /* current error                */
+   int     besti;      /* best index so far            */
+   float   best_error; /* best error so far            */
+   int    i,j,m;
+   float   diff, metric, best_metric, gain, sumAm, sumCb;
+
+   besti = 0;
+   best_metric = best_error = 1E32;
+   for(j=0; j<e; j++) {
+
+       /* compute optimum gain */
+
+       sumAm = sumCb = 0.0;
+       m = 0;
+       for(i=0; i<d; i++) {
+          if (vec[i] != 0.0) {
+              m++;
+              sumAm += vec[i];
+              sumCb += cb[j*d+i];
+          }
+       }
+       gain = (sumAm - sumCb)/m;
+
+       /* compute error */
+
+       metric = error = 0.0;
+       for(i=0; i<d; i++) {
+          if (vec[i] != 0.0) {
+              diff = vec[i] - cb[j*d+i] - gain;
+              error += diff*diff;
+              metric += weights[i]*diff*diff;
+          }
+       }
+       if (metric < best_metric) {
+          best_error = error;
+          best_metric = metric;
+          *best_gain = gain;
+          besti = j;
+       }
+   }
+
+   *se += best_error;
+
+   return(besti);
+}
+
+
+static void gain_shape_split_vq(float sparse_pe_out[], struct AEXP *aexp, 
struct codebook *vq, float weights[], float sparse_pe_in[], float *best_gain)
+{
+    int i, j, non_zero, vq_ind;
+    float se;
+
+    vq_ind = gain_shape_vq_amp(vq->cb, &sparse_pe_in[vq->offset], 
&weights[vq->offset], vq->k, vq->m, &se, best_gain);
+    //printf("\n offset %d k %d m %d vq_ind %d gain: %4.2f j: ", vq->offset, 
vq->k, vq->m, vq_ind, *best_gain);
+
+    non_zero = 0;
+    for(i=0, j=vq->offset; i<vq->k; i++,j++) {
+       if (sparse_pe_in[j] != 0.0) {
+           //printf("%d ", j);
+           sparse_pe_out[j] = vq->cb[vq->k * vq_ind + i] + *best_gain;
+           non_zero++;
+       }
+    }
+    aexp->vq_var_n += non_zero;
+}
+
+
+static void gain_shape_sparse_vq_amp(struct AEXP *aexp, MODEL *model)
+{
+    int    m, index;
+    float  amp_dB, best_gain;
+    float  sparse_pe_in[MAX_AMP];
+    float  sparse_pe_out[MAX_AMP];
+    float  weights[MAX_AMP];
+
+    for(m=0; m<MAX_AMP; m++) {
+       sparse_pe_in[m] = 0.0;
+       sparse_pe_out[m] = 0.0;
+    }
+
+    for(m=1; m<=model->L; m++) {
+       assert(model->A[m] > 0.0);
+
+       index = MAX_AMP*m*model->Wo/PI;
+       assert(index < MAX_AMP);
+       sparse_pe_in[index] = 20.0*log10(model->A[m]);
+       weights[index] = model->A[m];
+    }
+
+    /* vector quantise */
+
+    for(m=0; m<MAX_AMP; m++) {
+       sparse_pe_out[m] = sparse_pe_in[m];
+    }
+
+    gain_shape_split_vq(sparse_pe_out, aexp, aexp->vq1, weights, sparse_pe_in, 
&best_gain);
+    gain_shape_split_vq(sparse_pe_out, aexp, aexp->vq2, weights, sparse_pe_in, 
&best_gain);
+    gain_shape_split_vq(sparse_pe_out, aexp, aexp->vq3, weights, sparse_pe_in, 
&best_gain);
+    gain_shape_split_vq(sparse_pe_out, aexp, aexp->vq4, weights, sparse_pe_in, 
&best_gain);
+
+    for(m=0; m<MAX_AMP; m++) {
+       if (sparse_pe_in[m] != 0.0)
+           aexp->vq_var += pow(sparse_pe_out[m] - sparse_pe_in[m], 2.0);
+    }
+
+    /* transform quantised amps back */
+
+    for(m=1; m<=model->L; m++) {
+       index = MAX_AMP*m*model->Wo/PI;
+       assert(index < MAX_AMP);
+       amp_dB = sparse_pe_out[index];
+       model->A[m] = pow(10.0, amp_dB/20.0);
+    }
+    //exit(0);
+}
+
+
+static void interp_split_vq(float sparse_pe_out[], struct AEXP *aexp, struct 
codebook *vq, float sparse_pe_in[], int ind)
+{
+    int   i, j;
+    float amp_dB;
+
+    for(i=0, j=vq->offset; i<vq->k; i++,j++) {
+       if (sparse_pe_in[j] != 0.0) {
+           amp_dB  = 0.5*(aexp->mag[0] + vq->cb[vq->k * aexp->indexes[ind][0] 
+ i]);
+           amp_dB += 0.5*(aexp->mag[2] + vq->cb[vq->k * aexp->indexes[ind][2] 
+ i]);
+           sparse_pe_out[j] = amp_dB;
+       }
+    }
+}
+
+
+static void vq_interp(struct AEXP *aexp, MODEL *model, int on)
+{
+    int              i, j, m, index;
+    float            amp_dB;
+    //struct codebook *vq = aexp->vq1;
+    float  sparse_pe_in[MAX_AMP];
+    float  sparse_pe_out[MAX_AMP];
+
+    /* replace odd frames with interp */
+    /* once we get an even input frame we can interpolate and output odd */
+    /* using VQ to interpolate.  This assumes some correlation in
+       adjacent VQ samples */
+
+    memcpy(&aexp->model[2], model, sizeof(MODEL));
+
+    /* once we get an even input frame we have enough information to
+      replace prev odd frame with interpolated version */
+
+    if (on && ((aexp->frames % 2) == 0)) {
+
+       /* copy Wo, L, and phases */
+
+       memcpy(model, &aexp->model[1], sizeof(MODEL));
+       //printf("mags: %4.2f %4.2f %4.2f Am: \n", aexp->mag[0], aexp->mag[1], 
aexp->mag[2]);
+
+       /* now replace Am by interpolation, use similar design to VQ
+          to handle different bands  */
+
+       for(m=1; m<=model->L; m++) {
+           assert(model->A[m] > 0.0);
+
+           index = MAX_AMP*m*model->Wo/PI;
+           assert(index < MAX_AMP);
+           sparse_pe_in[index] = 20.0*log10(model->A[m]);
+       }
+
+       /* this can be used for when just testing partial interpolation */
+
+       for(m=0; m<MAX_AMP; m++) {
+           //sparse_pe_out[m] = sparse_pe_in[m];
+           sparse_pe_out[m] = 0;
+       }
+
+       interp_split_vq(sparse_pe_out, aexp, aexp->vq1, sparse_pe_in, 0);
+       interp_split_vq(sparse_pe_out, aexp, aexp->vq2, sparse_pe_in, 1);
+       interp_split_vq(sparse_pe_out, aexp, aexp->vq3, sparse_pe_in, 2);
+       interp_split_vq(sparse_pe_out, aexp, aexp->vq4, sparse_pe_in, 3);
+       interp_split_vq(sparse_pe_out, aexp, aexp->vq5, sparse_pe_in, 4);
+
+       for(m=1; m<=model->L; m++) {
+           index = MAX_AMP*m*model->Wo/PI;
+           assert(index < MAX_AMP);
+           amp_dB = sparse_pe_out[index];
+           //printf("  %4.2f", 10.0*log10(model->A[m]));
+           model->A[m] = pow(10.0, amp_dB/20.0);
+           //printf("  %4.2f\n", 10.0*log10(model->A[m]));
+       }
+
+        #ifdef INITIAL_VER
+
+       for(m=1; m<=model->L; m++) {
+           index = MAX_AMP*m*model->Wo/PI;
+           assert(index < MAX_AMP);
+
+           if (index < vq->k) {
+               amp_dB  = 0.5*(aexp->mag[0] + vq->cb[vq->k * aexp->indexes[0] + 
index]);
+               amp_dB += 0.5*(aexp->mag[2] + vq->cb[vq->k * aexp->indexes[2] + 
index]);
+               //printf("  %4.2f", 10.0*log10(model->A[m]));
+               //amp_dB = 10;
+               model->A[m] = pow(10.0, amp_dB/20.0);
+               printf("  %4.2f\n", 10.0*log10(model->A[m]));
+           }
+       }
+
+       #endif
+    }
+    else
+       memcpy(model, &aexp->model[1], sizeof(MODEL));
+
+    /* update memories */
+
+    for(i=0; i<2; i++) {
+       memcpy(&aexp->model[i], &aexp->model[i+1], sizeof(MODEL));
+       for(j=0; j<5; j++)
+           aexp->indexes[j][i] = aexp->indexes[j][i+1];
+       aexp->mag[i] = aexp->mag[i+1];
+    }
+
+}
+
+
+/*
+  This functions tests theory that some bands can be combined together
+  due to less frequency resolution at higher frequencies.  This will
+  reduce the amount of information we need to encode.
+*/
+
+void smooth_samples(struct AEXP *aexp, MODEL *model, int mode)
+{
+    int    m, i, j, index, step, nav, v, en;
+    float  sparse_pe_in[MAX_AMP], av, amp_dB;
+    float  sparse_pe_out[MAX_AMP];
+    float  smoothed[MAX_AMP], smoothed_out[MAX_AMP];
+    float  weights[MAX_AMP];
+    float  enormdB;
+
+    frame_energy(model, &enormdB);
+
+    for(m=0; m<MAX_AMP; m++) {
+       sparse_pe_in[m] = 0.0;
+       sparse_pe_out[m] = 0.0;
+    }
+
+    /* set up sparse array */
+
+    for(m=1; m<=model->L; m++) {
+       assert(model->A[m] > 0.0);
+
+       index = MAX_AMP*m*model->Wo/PI;
+       assert(index < MAX_AMP);
+       sparse_pe_out[index] = sparse_pe_in[index] = 20.0*log10(model->A[m]) - 
enormdB;
+    }
+
+    /* now combine samples at high frequencies to reduce dimension */
+
+    step=4;
+    for(i=MAX_AMP/2,v=0; i<MAX_AMP; i+=step,v++) {
+
+       /* average over one band */
+
+       av = 0.0; nav = 0;
+       en = i+step;
+       if (en > (MAX_AMP-1))
+           en = MAX_AMP-1;
+       for(j=i; j<en; j++) {
+           if (sparse_pe_in[j] != 0.0) {
+               av += sparse_pe_in[j];
+               nav++;
+           }
+       }
+       if (nav) {
+           av /= nav;
+           smoothed[v] = av;
+           weights[v] = pow(10.0,av/20.0);
+           //weights[v] = 1.0;
+       }
+       else
+           smoothed[v] = 0.0;
+
+    }
+
+    if (mode == 1) {
+       for(i=0; i<v; i++)
+           printf("%5.2f ", smoothed[i]);
+       printf("\n");
+    }
+
+    if (mode == 2) {
+       for(i=0; i<v; i++)
+           smoothed_out[i] = 0;
+       split_vq(smoothed_out, aexp, aexp->vq1, weights, smoothed);
+       for(i=0; i<v; i++)
+           smoothed[i] = smoothed_out[i];
+    }
+
+    /* set all samples to smoothed average */
+
+    step = 4;
+    for(i=MAX_AMP/2,v=0; i<MAX_AMP; i+=step,v++) {
+       en = i+step;
+       if (en > (MAX_AMP-1))
+           en = MAX_AMP-1;
+       for(j=i; j<en; j++)
+           sparse_pe_out[j] = smoothed[v];
+    }
+
+    /* convert back to Am */
+
+    for(m=1; m<=model->L; m++) {
+       index = MAX_AMP*m*model->Wo/PI;
+       assert(index < MAX_AMP);
+       amp_dB = sparse_pe_out[index] + enormdB;
+       //printf("%d %4.2f %4.2f\n", m, 10.0*log10(model->A[m]), amp_dB);
+       model->A[m] = pow(10.0, amp_dB/20.0);
+    }
+
+}
+
+#define MAX_BINS 40
+static float bins[] = {
+    /*1000.0, 1200.0, 1400.0, 1600.0, 1800,*/
+    2000.0, 2400.0, 2800.0,
+    3000.0, 3400.0, 3600.0, 4000.0};
+
+void smooth_amp(struct AEXP *aexp, MODEL *model) {
+    int    m, i;
+    int    nbins;
+    int    b;
+    float  f;
+    float  av[MAX_BINS];
+    int    nav[MAX_BINS];
+
+    nbins = sizeof(bins)/sizeof(float);
+
+    /* clear all bins */
+
+    for(i=0; i<MAX_BINS; i++) {
+       av[i] = 0.0;
+       nav[i] = 0;
+    }
+
+    /* add amps into each bin */
+
+    for(m=1; m<=model->L; m++) {
+       f = m*model->Wo*FS/TWO_PI;
+       if (f > bins[0]) {
+
+           /* find bin  */
+
+           for(i=0; i<nbins; i++)
+               if ((f > bins[i]) && (f <= bins[i+1]))
+                   b = i;
+           assert(b < MAX_BINS);
+
+           av[b] += model->A[m]*model->A[m];
+           nav[b]++;
+       }
+
+    }
+
+    /* use averages to est amps */
+
+    for(m=1; m<=model->L; m++) {
+       f = m*model->Wo*FS/TWO_PI;
+       if (f > bins[0]) {
+
+           /* find bin */
+
+           for(i=0; i<nbins; i++)
+               if ((f > bins[i]) && (f <= bins[i+1]))
+                   b = i;
+           assert(b < MAX_BINS);
+
+           /* add predicted phase error to this bin */
+
+           printf("L %d m %d f %4.f b %d\n", model->L, m, f, b);
+
+           printf(" %d: %4.3f -> ", m, 20*log10(model->A[m]));
+           model->A[m] = sqrt(av[b]/nav[b]);
+           printf("%4.3f\n", 20*log10(model->A[m]));
+       }
+    }
+    printf("\n");
+}
+
+/*---------------------------------------------------------------------------* 
\
+
+  amp_experiment()
+
+  Amplitude quantisation experiments.
+
+\*---------------------------------------------------------------------------*/
+
+void amp_experiment(struct AEXP *aexp, MODEL *model, char *arg) {
+    int m,i;
+
+    memcpy(&aexp->model_uq[2], model, sizeof(MODEL));
+
+    if (strcmp(arg, "qn") == 0) {
+       add_quant_noise(aexp, model, 1, model->L, 1);
+       update_snr_calc(aexp, &aexp->model_uq[2], model);
+   }
+
+    /* print training samples that can be > train.txt for training VQ */
+
+    if (strcmp(arg, "train") == 0)
+       print_sparse_amp_error(aexp, model, 00.0);
+
+    /* VQ of amplitudes, no interpolation (ie 10ms rate) */
+
+    if (strcmp(arg, "vq") == 0) {
+       sparse_vq_amp(aexp, model);
+       vq_interp(aexp, model, 0);
+       update_snr_calc(aexp, &aexp->model_uq[1], model);
+    }
+
+    /* VQ of amplitudes, interpolation (ie 20ms rate) */
+
+    if (strcmp(arg, "vqi") == 0) {
+       sparse_vq_amp(aexp, model);
+       vq_interp(aexp, model, 1);
+       update_snr_calc(aexp, &aexp->model_uq[1], model);
+    }
+
+    /* gain/shape VQ of amplitudes, 10ms rate (doesn't work that well) */
+
+    if (strcmp(arg, "gsvq") == 0) {
+       gain_shape_sparse_vq_amp(aexp, model);
+       vq_interp(aexp, model, 0);
+       update_snr_calc(aexp, &aexp->model_uq[1], model);
+    }
+
+    if (strcmp(arg, "smooth") == 0) {
+       smooth_samples(aexp, model, 0);
+       update_snr_calc(aexp, &aexp->model_uq[2], model);
+    }
+
+    if (strcmp(arg, "smoothtrain") == 0) {
+       smooth_samples(aexp, model, 1);
+       //update_snr_calc(aexp, &aexp->model_uq[2], model);
+    }
+
+    if (strcmp(arg, "smoothvq") == 0) {
+       smooth_samples(aexp, model, 2);
+       update_snr_calc(aexp, &aexp->model_uq[2], model);
+    }
+
+    if (strcmp(arg, "smoothamp") == 0) {
+       smooth_amp(aexp, model);
+       update_snr_calc(aexp, &aexp->model_uq[2], model);
+    }
+
+    /* update states */
+
+    for(m=1; m<=model->L; m++)
+       aexp->A_prev[m] = model->A[m];
+    aexp->frames++;
+    for(i=0; i<3; i++)
+       aexp->model_uq[i] = aexp->model_uq[i+1];
+}
+
diff --git a/gr-vocoder/lib/codec2/phase.h b/gr-vocoder/lib/codec2/ampexp.h
similarity index 62%
copy from gr-vocoder/lib/codec2/phase.h
copy to gr-vocoder/lib/codec2/ampexp.h
index 4f1a620..8954ea2 100644
--- a/gr-vocoder/lib/codec2/phase.h
+++ b/gr-vocoder/lib/codec2/ampexp.h
@@ -1,15 +1,15 @@
 /*---------------------------------------------------------------------------*\
 
-  FILE........: phase.h
+  FILE........: ampexp.h
   AUTHOR......: David Rowe
-  DATE CREATED: 1/2/09
+  DATE CREATED: & August 2012
 
-  Functions for modelling phase.
+  Functions for experimenting with amplitude quantisation.
 
 \*---------------------------------------------------------------------------*/
 
 /*
-  Copyright (C) 2009 David Rowe
+  Copyright (C) 2012 David Rowe
 
   All rights reserved.
 
@@ -22,13 +22,18 @@
   License for more details.
 
   You should have received a copy of the GNU Lesser General Public License
-  along with this program; if not, see <http://www.gnu.org/licenses/>.
+  along with this program; if not,see <http://www.gnu.org/licenses/>.
 */
 
-#ifndef __PHASE__
-#define __PHASE__
+#ifndef __AMPEX__
+#define __AMPEXP__
 
-void phase_synth_zero_order(MODEL *model, float aks[], float *ex_phase,
-                           int order);
+#include "defines.h"
+
+struct AEXP;
+
+struct AEXP *amp_experiment_create();
+void amp_experiment_destroy(struct AEXP *aexp);
+void amp_experiment(struct AEXP *aexp, MODEL *model, char *arg);
 
 #endif
diff --git a/gr-vocoder/lib/codec2/c2dec.c b/gr-vocoder/lib/codec2/c2dec.c
index 3123e96..df4e82f 100644
--- a/gr-vocoder/lib/codec2/c2dec.c
+++ b/gr-vocoder/lib/codec2/c2dec.c
@@ -27,54 +27,213 @@
 
 #include "codec2.h"
 
+#include <assert.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
 
-#define BITS_SIZE      ((CODEC2_BITS_PER_FRAME + 7) / 8)
+#define NONE          0  /* no bit errors                          */
+#define UNIFORM       1  /* random bit errors                      */
+#define TWO_STATE     2  /* Two state error model                  */
+#define UNIFORM_RANGE 3  /* random bit errors over a certain range */
 
 int main(int argc, char *argv[])
 {
-    void *codec2;
-    FILE *fin;
-    FILE *fout;
-    short buf[CODEC2_SAMPLES_PER_FRAME];
-    unsigned char  bits[BITS_SIZE];
-
-    if (argc != 3) {
-       printf("usage: %s InputBitFile OutputRawSpeechFile\n", argv[0]);
+    int            mode;
+    void          *codec2;
+    FILE          *fin;
+    FILE          *fout;
+    FILE          *fber = NULL;
+    short         *buf;
+    unsigned char *bits, *prev_bits;
+    int            nsam, nbit, nbyte, i, byte, frames, bits_proc, bit_errors, 
error_mode;
+    int            nstart_bit, nend_bit, bit_rate;
+    int            state, next_state;
+    float          ber, r, burst_length, burst_period, burst_timer, ber_est;
+    unsigned char  mask;
+
+    if ((argc != 4) && (argc != 5) && (argc != 6) && (argc != 7)) {
+       printf("basic usage.................: c2dec 
3200|2400|1600|1400|1300|1200 InputBitFile OutputRawSpeechFile\n");
+       printf("uniform errors usage........: c2dec 
3200|2400|1600|1400|1300|1200 InputBitFile OutputRawSpeechFile uniformBER 
startBit endBit\n");
+       printf("uniform error on range usage: c2dec 
3200|2400|1600|1400|1300|1200 InputBitFile OutputRawSpeechFile uniformBER\n");
+       printf("demod BER estimate..........: c2dec 
3200|2400|1600|1400|1300|1200 InputBitFile OutputRawSpeechFile BERfile\n");
+       printf("two state fading usage......: c2dec 
3200|2400|1600|1400|1300|1200 InputBitFile OutputRawSpeechFile burstLength 
burstPeriod\n");
+       printf("e.g    c2dec 1400 hts1a.c2 hts1a_1400.raw\n");
+       printf("e.g    c2dec 1400 hts1a.c2 hts1a_1400.raw 0.9\n");
+       printf("e.g    c2dec 1400 hts1a.c2 hts1a_1400.raw 0.99 0.9\n");
        exit(1);
     }
 
-    if (strcmp(argv[1], "-")  == 0) fin = stdin;
-    else if ( (fin = fopen(argv[1],"rb")) == NULL ) {
+    if (strcmp(argv[1],"3200") == 0)
+       mode = CODEC2_MODE_3200;
+    else if (strcmp(argv[1],"2400") == 0)
+       mode = CODEC2_MODE_2400;
+    else if (strcmp(argv[1],"1600") == 0)
+       mode = CODEC2_MODE_1600;
+    else if (strcmp(argv[1],"1400") == 0)
+       mode = CODEC2_MODE_1400;
+    else if (strcmp(argv[1],"1300") == 0)
+       mode = CODEC2_MODE_1300;
+    else if (strcmp(argv[1],"1200") == 0)
+       mode = CODEC2_MODE_1200;
+    else {
+       fprintf(stderr, "Error in mode: %s.  Must be 3200, 2400, 1600, 1400, 
1300 or 1200\n", argv[1]);
+       exit(1);
+    }
+    bit_rate = atoi(argv[1]);
+
+    if (strcmp(argv[2], "-")  == 0) fin = stdin;
+    else if ( (fin = fopen(argv[2],"rb")) == NULL ) {
        fprintf(stderr, "Error opening input bit file: %s: %s.\n",
-         argv[1], strerror(errno));
+         argv[2], strerror(errno));
        exit(1);
     }
 
-    if (strcmp(argv[2], "-") == 0) fout = stdout;
-    else if ( (fout = fopen(argv[2],"wb")) == NULL ) {
+    if (strcmp(argv[3], "-") == 0) fout = stdout;
+    else if ( (fout = fopen(argv[3],"wb")) == NULL ) {
        fprintf(stderr, "Error opening output speech file: %s: %s.\n",
-         argv[2], strerror(errno));
+         argv[3], strerror(errno));
        exit(1);
     }
 
-    codec2 = codec2_create();
+    error_mode = NONE;
+    ber = 0.0;
+    burst_length = burst_period = 0.0;
+    burst_timer = 0.0;
+
+    codec2 = codec2_create(mode);
+    nsam = codec2_samples_per_frame(codec2);
+    nbit = codec2_bits_per_frame(codec2);
+    buf = (short*)malloc(nsam*sizeof(short));
+    nbyte = (nbit + 7) / 8;
+    bits = (unsigned char*)malloc(nbyte*sizeof(char));
+    prev_bits = (unsigned char*)malloc(nbyte*sizeof(char));
+    frames = bit_errors = bits_proc = 0;
+    nstart_bit = 0;
+    nend_bit = nbit-1;
+
+    if (argc == 5) {
+        /* see if 4th argument is a valid file name */
+        if ( (fber = fopen(argv[4],"rb")) == NULL ) {
+            /* otherwise it must be BER value for uniform errors */
+            ber = atof(argv[4]);
+           error_mode = UNIFORM;
+        }
+    }
+
+    if (argc == 6) {
+        error_mode = TWO_STATE;
+       burst_length = atof(argv[4]);
+       burst_period = atof(argv[5]);
+       nstart_bit = 0;
+       nend_bit = 2;
+        state = 0;
+    }
+
+    if (argc == 7) {
+        error_mode = UNIFORM_RANGE;
+       ber = atof(argv[4]);
+       nstart_bit = atoi(argv[5]);
+       nend_bit = atoi(argv[6]);
+        fprintf(stderr, "ber: %f nstart_bit: %d nend_bit: %d\n", ber, 
nstart_bit, nend_bit);
+        state = 0;
+    }
 
-    while(fread(bits, sizeof(char), BITS_SIZE, fin) == BITS_SIZE) {
-       codec2_decode(codec2, buf, bits);
-       fwrite(buf, sizeof(short), CODEC2_SAMPLES_PER_FRAME, fout);
+    assert(nend_bit <= nbit);
+
+    while(fread(bits, sizeof(char), nbyte, fin) == (size_t)nbyte) {
+       frames++;
+
+        // apply bit errors, MSB of byte 0 is bit 0 in frame */
+
+       if ((error_mode == UNIFORM) || (error_mode == UNIFORM_RANGE)) {
+           for(i=nstart_bit; i<nend_bit+1; i++) {
+               r = (float)rand()/RAND_MAX;
+               if (r < ber) {
+                   byte = i/8;
+                   //printf("nbyte %d nbit %d i %d byte %d bits[%d] 0x%0x ", 
nbyte, nbit, i, byte, byte, bits[byte]);
+                   mask = 1 << (7 - i + byte*8);
+                    bits[byte] ^= mask;
+                   //printf("shift: %d mask: 0x%0x bits[%d] 0x%0x\n", 7 - i + 
byte*8, mask, byte, bits[byte] );
+                   bit_errors++;
+               }
+                bits_proc++;
+           }
+       }
+
+       if (error_mode == TWO_STATE) {
+            burst_timer += (float)nbit/bit_rate;
+            fprintf(stderr, "burst_timer: %f  state: %d\n", burst_timer, 
state);
+
+            next_state = state;
+            switch(state) {
+            case 0:
+
+                /* clear channel state - no bit errors */
+
+                if (burst_timer > (burst_period - burst_length))
+                    next_state = 1;
+                break;
+
+            case 1:
+
+                /* burst error state - 50% bit error rate */
+
+                for(i=nstart_bit; i<nend_bit+1; i++) {
+                    r = (float)rand()/RAND_MAX;
+                    if (r < 0.5) {
+                        byte = i/8;
+                        bits[byte] ^= 1 << (7 - i + byte*8);
+                        bit_errors++;
+                    }
+                    bits_proc++;
+               }
+
+                if (burst_timer > burst_period) {
+                    burst_timer = 0.0;
+                    next_state = 0;
+                }
+                break;
+
+           }
+
+            state = next_state;
+        }
+
+        if (fber != NULL) {
+            if (fread(&ber_est, sizeof(float), 1, fber) != 1) {
+                fprintf(stderr, "ran out of BER estimates!\n");
+                exit(1);
+            }
+            //fprintf(stderr, "ber_est: %f\n", ber_est);
+        }
+        else
+            ber_est = 0.0;
+
+        /* frame repeat logic */
+        if (ber_est > 0.15) {
+            //memcpy(bits, prev_bits, nbyte);
+            // fprintf(stderr, "repeat\n");
+        }
+
+       codec2_decode(codec2, buf, bits, ber_est);
+       fwrite(buf, sizeof(short), nsam, fout);
        //if this is in a pipeline, we probably don't want the usual
         //buffering to occur
         if (fout == stdout) fflush(stdout);
         if (fin == stdin) fflush(stdin);
 
- }
+        memcpy(prev_bits, bits, nbyte);
+    }
+
+    if (error_mode)
+       fprintf(stderr, "actual BER: %1.3f\n", (float)bit_errors/bits_proc);
 
     codec2_destroy(codec2);
 
+    free(buf);
+    free(bits);
     fclose(fin);
     fclose(fout);
 
diff --git a/gr-vocoder/lib/codec2/c2demo.c b/gr-vocoder/lib/codec2/c2demo.c
index b9e17a7..0090069 100644
--- a/gr-vocoder/lib/codec2/c2demo.c
+++ b/gr-vocoder/lib/codec2/c2demo.c
@@ -32,21 +32,26 @@
 */
 
 #include "codec2.h"
+#include "sine.h"
 
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
 
-#define BITS_SIZE      ((CODEC2_BITS_PER_FRAME + 7) / 8)
-
 int main(int argc, char *argv[])
 {
-    void *codec2;
-    FILE *fin;
-    FILE *fout;
-    short buf[CODEC2_SAMPLES_PER_FRAME];
-    unsigned char  bits[BITS_SIZE];
+    struct CODEC2 *codec2;
+    FILE          *fin;
+    FILE          *fout;
+    short         *buf;
+    unsigned char *bits;
+    int            nsam, nbit, i, r;
+
+    for(i=0; i<10; i++) {
+        r = codec2_rand();
+        printf("[%d] r = %d\n", i, r);
+    }
 
     if (argc != 3) {
        printf("usage: %s InputRawSpeechFile OutputRawSpeechFile\n", argv[0]);
@@ -65,18 +70,27 @@ int main(int argc, char *argv[])
        exit(1);
     }
 
+    #ifdef DUMP
+    dump_on("c2demo");
+    #endif
+
     /* Note only one set of Codec 2 states is required for an encoder
        and decoder pair. */
 
-    codec2 = codec2_create();
+    codec2 = codec2_create(CODEC2_MODE_1300);
+    nsam = codec2_samples_per_frame(codec2);
+    buf = (short*)malloc(nsam*sizeof(short));
+    nbit = codec2_bits_per_frame(codec2);
+    bits = (unsigned char*)malloc(nbit*sizeof(char));
 
-    while(fread(buf, sizeof(short), CODEC2_SAMPLES_PER_FRAME, fin) ==
-         CODEC2_SAMPLES_PER_FRAME) {
+    while(fread(buf, sizeof(short), nsam, fin) == (size_t)nsam) {
        codec2_encode(codec2, bits, buf);
-       codec2_decode(codec2, buf, bits);
-       fwrite(buf, sizeof(short), CODEC2_SAMPLES_PER_FRAME, fout);
+       codec2_decode(codec2, buf, bits, 0.0);
+       fwrite(buf, sizeof(short), nsam, fout);
     }
 
+    free(buf);
+    free(bits);
     codec2_destroy(codec2);
 
     fclose(fin);
diff --git a/gr-vocoder/lib/codec2/c2enc.c b/gr-vocoder/lib/codec2/c2enc.c
index 0e5b26c..ab1ebe4 100644
--- a/gr-vocoder/lib/codec2/c2enc.c
+++ b/gr-vocoder/lib/codec2/c2enc.c
@@ -33,49 +33,74 @@
 #include <string.h>
 #include <errno.h>
 
-#define BITS_SIZE      ((CODEC2_BITS_PER_FRAME + 7) / 8)
-
 int main(int argc, char *argv[])
 {
-    void *codec2;
-    FILE *fin;
-    FILE *fout;
-    short buf[CODEC2_SAMPLES_PER_FRAME];
-    unsigned char  bits[BITS_SIZE];
-
-    if (argc != 3) {
-       printf("usage: %s InputRawspeechFile OutputBitFile\n", argv[0]);
+    int            mode;
+    void          *codec2;
+    FILE          *fin;
+    FILE          *fout;
+    short         *buf;
+    unsigned char *bits;
+    int            nsam, nbit, nbyte;
+
+    if (argc != 4) {
+       printf("usage: c2enc 3200|2400|1600|1400|1300|1200 InputRawspeechFile 
OutputBitFile\n");
+       printf("e.g    c2enc 1400 ../raw/hts1a.raw hts1a.c2\n");
        exit(1);
     }
 
-    if (strcmp(argv[1], "-")  == 0) fin = stdin;
-    else if ( (fin = fopen(argv[1],"rb")) == NULL ) {
-       fprintf(stderr, "Error opening input bit file: %s: %s.\n",
-         argv[1], strerror(errno));
+    if (strcmp(argv[1],"3200") == 0)
+       mode = CODEC2_MODE_3200;
+    else if (strcmp(argv[1],"2400") == 0)
+       mode = CODEC2_MODE_2400;
+    else if (strcmp(argv[1],"1600") == 0)
+       mode = CODEC2_MODE_1600;
+    else if (strcmp(argv[1],"1400") == 0)
+       mode = CODEC2_MODE_1400;
+    else if (strcmp(argv[1],"1300") == 0)
+       mode = CODEC2_MODE_1300;
+    else if (strcmp(argv[1],"1200") == 0)
+       mode = CODEC2_MODE_1200;
+    else {
+       fprintf(stderr, "Error in mode: %s.  Must be 3200, 2400, 1600, 1400, 
1300 or 1200\n", argv[1]);
        exit(1);
     }
 
-    if (strcmp(argv[2], "-") == 0) fout = stdout;
-    else if ( (fout = fopen(argv[2],"wb")) == NULL ) {
-       fprintf(stderr, "Error opening output speech file: %s: %s.\n",
+    if (strcmp(argv[2], "-")  == 0) fin = stdin;
+    else if ( (fin = fopen(argv[2],"rb")) == NULL ) {
+       fprintf(stderr, "Error opening input speech file: %s: %s.\n",
          argv[2], strerror(errno));
        exit(1);
     }
 
-    codec2 = codec2_create();
+    if (strcmp(argv[3], "-") == 0) fout = stdout;
+    else if ( (fout = fopen(argv[3],"wb")) == NULL ) {
+       fprintf(stderr, "Error opening output compressed bit file: %s: %s.\n",
+         argv[3], strerror(errno));
+       exit(1);
+    }
+
+    codec2 = codec2_create(mode);
+    nsam = codec2_samples_per_frame(codec2);
+    nbit = codec2_bits_per_frame(codec2);
+    buf = (short*)malloc(nsam*sizeof(short));
+    nbyte = (nbit + 7) / 8;
+
+    bits = (unsigned char*)malloc(nbyte*sizeof(char));
 
-    while(fread(buf, sizeof(short), CODEC2_SAMPLES_PER_FRAME, fin) ==
-         CODEC2_SAMPLES_PER_FRAME) {
+    while(fread(buf, sizeof(short), nsam, fin) == (size_t)nsam) {
        codec2_encode(codec2, bits, buf);
-       fwrite(bits, sizeof(char), BITS_SIZE, fout);
-       //if this is in a pipeline, we probably don't want the usual
-        //buffering to occur
+       fwrite(bits, sizeof(char), nbyte, fout);
+       // if this is in a pipeline, we probably don't want the usual
+        // buffering to occur
         if (fout == stdout) fflush(stdout);
         if (fin == stdin) fflush(stdin);
     }
 
     codec2_destroy(codec2);
 
+    free(buf);
+    free(bits);
     fclose(fin);
     fclose(fout);
 
diff --git a/gr-vocoder/lib/codec2/c2sim.c b/gr-vocoder/lib/codec2/c2sim.c
index e335078..8f07299 100644
--- a/gr-vocoder/lib/codec2/c2sim.c
+++ b/gr-vocoder/lib/codec2/c2sim.c
@@ -4,8 +4,9 @@
   AUTHOR......: David Rowe
   DATE CREATED: 20/8/2010
 
-  Codec2 simulation.  Combines encoder and decoder and allows switching in
-  out various algorithms and quantisation steps.
+  Codec2 simulation.  Combines encoder and decoder and allows
+  switching in and out various algorithms and quantisation steps. Used
+  for algorithm development.
 
 \*---------------------------------------------------------------------------*/
 
@@ -32,6 +33,8 @@
 #include <string.h>
 #include <errno.h>
 #include <math.h>
+#include <unistd.h>
+#include <getopt.h>
 
 #include "defines.h"
 #include "sine.h"
@@ -43,32 +46,12 @@
 #include "phase.h"
 #include "postfilter.h"
 #include "interp.h"
+#include "ampexp.h"
+#include "phaseexp.h"
 
-/*---------------------------------------------------------------------------*\
-
- switch_present()
-
- Searches the command line arguments for a "switch".  If the switch is
- found, returns the command line argument where it ws found, else returns
- NULL.
-
-\*---------------------------------------------------------------------------*/
-
-int switch_present(sw,argc,argv)
-register char sw[];     /* switch in string form */
-register int argc;      /* number of command line arguments */
-register char *argv[];  /* array of command line arguments in string form */
-{
-  register int i;       /* loop variable */
-
-  for(i=1; i<argc; i++)
-    if (!strcmp(sw,argv[i]))
-      return(i);
+void synth_one_frame(kiss_fft_cfg fft_inv_cfg, short buf[], MODEL *model, 
float Sn_[], float Pn[], int prede, float *de_mem, float gain);
+void print_help(const struct option *long_options, int num_opts, char* argv[]);
 
-  return 0;
-}
-
-void synth_one_frame(short buf[], MODEL *model, float Sn_[], float Pn[]);
 
 /*---------------------------------------------------------------------------*\
 
@@ -78,386 +61,829 @@ void synth_one_frame(short buf[], MODEL *model, float 
Sn_[], float Pn[]);
 
 int main(int argc, char *argv[])
 {
-  FILE *fout;          /* output speech file                    */
-  FILE *fin;           /* input speech file                     */
-  short buf[N];                /* input/output buffer                   */
-  float Sn[M];         /* float input speech samples            */
-  COMP  Sw[FFT_ENC];   /* DFT of Sn[]                           */
-  float w[M];          /* time domain hamming window            */
-  COMP  W[FFT_ENC];    /* DFT of w[]                            */
-  MODEL model;
-  float Pn[2*N];       /* trapezoidal synthesis window          */
-  float Sn_[2*N];      /* synthesised speech */
-  int   i;             /* loop variable                         */
-  int   frames;
-  float prev_Wo;
-  float pitch;
-  int   voiced1 = 0;
-
-  char  out_file[MAX_STR];
-  int   arg;
-  float snr;
-  float sum_snr;
-
-  int lpc_model, order = LPC_ORD;
-  int lsp, lspd, lspdvq, lsp_quantiser;
-  float ak[LPC_MAX];
-  COMP  Sw_[FFT_ENC];
-  COMP  Ew[FFT_ENC];
-
-  int dump;
-
-  int phase0;
-  float ex_phase[MAX_AMP+1];
-
-  int   postfilt;
-  float bg_est;
-
-  int   hand_voicing;
-  FILE *fvoicing = 0;
-
-  MODEL prev_model, interp_model;
-  int decimate;
-  float lsps[LPC_ORD];
-  float prev_lsps[LPC_ORD];
-  float e, prev_e;
-  float ak_interp[LPC_MAX];
-
-  void *nlp_states;
-  float hpf_states[2];
-  int   resample;
-  float AresdB_prev[MAX_AMP];
-
-  for(i=0; i<MAX_AMP; i++)
-      AresdB_prev[i] = 0.0;
-
-  for(i=0; i<M; i++)
-      Sn[i] = 1.0;
-  for(i=0; i<2*N; i++)
-      Sn_[i] = 0;
-
-  prev_Wo = TWO_PI/P_MAX;
-
-  prev_model.Wo = TWO_PI/P_MIN;
-  prev_model.L = floor(PI/prev_model.Wo);
-  for(i=1; i<=prev_model.L; i++) {
-      prev_model.A[i] = 0.0;
-      prev_model.phi[i] = 0.0;
-  }
-  for(i=1; i<=MAX_AMP; i++) {
-      ex_phase[i] = 0.0;
-  }
-  for(i=0; i<LPC_ORD; i++) {
-      prev_lsps[i] = i*PI/(LPC_ORD+1);
-  }
-  e = prev_e = 1;
-  hpf_states[0] = hpf_states[1] = 0.0;
-
-  nlp_states = nlp_create();
-
-  if (argc < 2) {
-    fprintf(stderr, "\nCodec2 - 2400 bit/s speech codec - Simulation Program\n"
-     "\thttp://rowetel.com/codec2.html\n\n";
-     "usage: %s InputFile [-o OutputFile]\n"
-     "\t[--lpc Order]\n"
-     "\t[--lsp]\n"
-     "\t[--lspd]\n"
-     "\t[--lspdvq]\n"
-     "\t[--phase0]\n"
-     "\t[--postfilter]\n"
-     "\t[--hand_voicing]\n"
-     "\t[--dec]\n"
-     "\t[--dump DumpFilePrefix]\n", argv[0]);
-    exit(1);
-  }
-
-  /* Interpret command line arguments -------------------------------------*/
-
-  /* Input file */
-
-  if ((fin = fopen(argv[1],"rb")) == NULL) {
-    fprintf(stderr, "Error opening input speech file: %s: %s.\n",
-     argv[1], strerror(errno));
-    exit(1);
-  }
-
-  /* Output file */
-
-  if ((arg = switch_present("-o",argc,argv))) {
-    if ((fout = fopen(argv[arg+1],"wb")) == NULL) {
-      fprintf(stderr, "Error opening output speech file: %s: %s.\n",
-       argv[arg+1], strerror(errno));
-      exit(1);
+    FILE *fout = NULL; /* output speech file                    */
+    FILE *fin;         /* input speech file                     */
+    short buf[N];      /* input/output buffer                   */
+    float Sn[M];       /* float input speech samples            */
+    float Sn_pre[M];   /* pre-emphasised input speech samples   */
+    COMP  Sw[FFT_ENC]; /* DFT of Sn[]                           */
+    kiss_fft_cfg  fft_fwd_cfg;
+    kiss_fft_cfg  fft_inv_cfg;
+    float w[M];                /* time domain hamming window            */
+    COMP  W[FFT_ENC];  /* DFT of w[]                            */
+    MODEL model;
+    float Pn[2*N];     /* trapezoidal synthesis window          */
+    float Sn_[2*N];    /* synthesised speech */
+    int   i;           /* loop variable                         */
+    int   frames;
+    float prev_Wo, prev__Wo, uq_Wo, prev_uq_Wo;
+    float pitch;
+    int   voiced1 = 0;
+    char  out_file[MAX_STR];
+    char  ampexp_arg[MAX_STR];
+    char  phaseexp_arg[MAX_STR];
+    float snr;
+    float sum_snr;
+
+    int lpc_model = 0, order = LPC_ORD;
+    int lsp = 0, lspd = 0, lspvq = 0;
+    int lspres = 0;
+    int lspdt = 0, lspdt_mode = LSPDT_ALL;
+    int dt = 0, lspjvm = 0, lspanssi = 0, lspjnd = 0, lspmel = 0;
+    int prede = 0;
+    float pre_mem = 0.0, de_mem = 0.0;
+    float ak[LPC_MAX];
+    COMP  Sw_[FFT_ENC];
+    COMP  Ew[FFT_ENC];
+
+    int phase0 = 0;
+    float ex_phase[MAX_AMP+1];
+
+    int   postfilt;
+    float bg_est;
+
+    int   hand_voicing = 0, phaseexp = 0, ampexp = 0, hi = 0, simlpcpf = 0;
+    int   lpcpf = 0;
+    FILE *fvoicing = 0;
+
+    MODEL prev_model, interp_model;
+    int decimate = 0;
+    float lsps[LPC_MAX];
+    float prev_lsps[LPC_MAX], prev_lsps_[LPC_MAX];
+    float lsps__prev[LPC_MAX];
+    float lsps__prev2[LPC_MAX];
+    float e, prev_e;
+    float ak_interp[LPC_MAX];
+    int   lsp_indexes[LPC_MAX];
+    float lsps_[LPC_MAX];
+    float Woe_[2];
+
+    void *nlp_states;
+    float hpf_states[2];
+    int   scalar_quant_Wo_e = 0;
+    int   vector_quant_Wo_e = 0;
+    int   dump_pitch_e = 0;
+    FILE *fjvm = NULL;
+    #ifdef DUMP
+    int   dump;
+    #endif
+    struct PEXP *pexp = NULL;
+    struct AEXP *aexp = NULL;
+    float gain = 1.0;
+
+    char* opt_string = "ho:";
+    struct option long_options[] = {
+        { "lpc", required_argument, &lpc_model, 1 },
+        { "lspjnd", no_argument, &lspjnd, 1 },
+        { "lspmel", no_argument, &lspmel, 1 },
+        { "lsp", no_argument, &lsp, 1 },
+        { "lspd", no_argument, &lspd, 1 },
+        { "lspvq", no_argument, &lspvq, 1 },
+        { "lspres", no_argument, &lspres, 1 },
+        #ifdef __EXPERIMENTAL__
+        { "lspdt", no_argument, &lspdt, 1 },
+        { "lspdt_mode", required_argument, NULL, 0 },
+        #endif
+        { "lspjvm", no_argument, &lspjvm, 1 },
+        #ifdef __EXPERIMENTAL__
+        { "lspanssi", no_argument, &lspanssi, 1 },
+        #endif
+        { "phase0", no_argument, &phase0, 1 },
+        { "phaseexp", required_argument, &phaseexp, 1 },
+        { "ampexp", required_argument, &ampexp, 1 },
+        { "postfilter", no_argument, &postfilt, 1 },
+        { "hand_voicing", required_argument, &hand_voicing, 1 },
+        { "dec", no_argument, &decimate, 1 },
+        { "dt", no_argument, &dt, 1 },
+        { "hi", no_argument, &hi, 1 },
+        { "simlpcpf", no_argument, &simlpcpf, 1 },
+        { "lpcpf", no_argument, &lpcpf, 1 },
+        { "prede", no_argument, &prede, 1 },
+        { "dump_pitch_e", required_argument, &dump_pitch_e, 1 },
+        { "sq_pitch_e", no_argument, &scalar_quant_Wo_e, 1 },
+        { "vq_pitch_e", no_argument, &vector_quant_Wo_e, 1 },
+        { "rate", required_argument, NULL, 0 },
+        { "gain", required_argument, NULL, 0 },
+        #ifdef DUMP
+        { "dump", required_argument, &dump, 1 },
+        #endif
+        { "help", no_argument, NULL, 'h' },
+        { NULL, no_argument, NULL, 0 }
+    };
+    int num_opts=sizeof(long_options)/sizeof(struct option);
+
+    for(i=0; i<M; i++) {
+       Sn[i] = 1.0;
+       Sn_pre[i] = 1.0;
     }
-    strcpy(out_file,argv[arg+1]);
-  }
-  else
-    fout = NULL;
-
-  lpc_model = 0;
-  if ((arg = switch_present("--lpc",argc,argv))) {
-      lpc_model = 1;
-      order = atoi(argv[arg+1]);
-      if ((order < 4) || (order > 20)) {
-        fprintf(stderr, "Error in lpc order: %d\n", order);
-        exit(1);
-      }
-  }
-
-  dump = switch_present("--dump",argc,argv);
-#ifdef DUMP
-  if (dump)
-      dump_on(argv[dump+1]);
-#endif
-
-  lsp = switch_present("--lsp",argc,argv);
-  lsp_quantiser = 0;
-  if (lsp)
-      assert(order == LPC_ORD);
+    for(i=0; i<2*N; i++)
+       Sn_[i] = 0;
 
-  lspd = switch_present("--lspd",argc,argv);
-  if (lspd)
-      assert(order == LPC_ORD);
+    prev_uq_Wo = prev_Wo = prev__Wo = TWO_PI/P_MAX;
 
-  lspdvq = switch_present("--lspdvq",argc,argv);
-  if (lspdvq)
-      assert(order == LPC_ORD);
+    prev_model.Wo = TWO_PI/P_MIN;
+    prev_model.L = floor(PI/prev_model.Wo);
+    for(i=1; i<=prev_model.L; i++) {
+       prev_model.A[i] = 0.0;
+       prev_model.phi[i] = 0.0;
+    }
+    for(i=1; i<=MAX_AMP; i++) {
+       //ex_phase[i] = (PI/3)*(float)rand()/RAND_MAX;
+       ex_phase[i] = 0.0;
+    }
+    for(i=0; i<LPC_ORD; i++) {
+       lsps_[i] = prev_lsps[i] = prev_lsps_[i] = i*PI/(LPC_ORD+1);
+       lsps__prev[i] = lsps__prev2[i] = i*PI/(LPC_ORD+1);
+    }
+    e = prev_e = 1;
+    hpf_states[0] = hpf_states[1] = 0.0;
 
-  phase0 = switch_present("--phase0",argc,argv);
-  if (phase0) {
-      ex_phase[0] = 0;
-  }
+    nlp_states = nlp_create(M);
 
-  hand_voicing = switch_present("--hand_voicing",argc,argv);
-  if (hand_voicing) {
-      fvoicing = fopen(argv[hand_voicing+1],"rt");
-      assert(fvoicing != NULL);
-  }
+    if (argc < 2) {
+        print_help(long_options, num_opts, argv);
+    }
 
-  bg_est = 0.0;
-  postfilt = switch_present("--postfilter",argc,argv);
+    /*----------------------------------------------------------------*\
+
+                     Interpret Command Line Arguments
+
+    \*----------------------------------------------------------------*/
+
+    while(1) {
+        int option_index = 0;
+        int opt = getopt_long(argc, argv, opt_string,
+                    long_options, &option_index);
+        if (opt == -1)
+            break;
+        switch (opt) {
+         case 0:
+            if(strcmp(long_options[option_index].name, "lpc") == 0) {
+                order = atoi(optarg);
+                if((order < 4) || (order > 20)) {
+                    fprintf(stderr, "Error in LPC order: %s\n", optarg);
+                    exit(1);
+                }
+            #ifdef DUMP
+            } else if(strcmp(long_options[option_index].name, "dump") == 0) {
+                if (dump)
+                   dump_on(optarg);
+            #endif
+            } else if(strcmp(long_options[option_index].name, "lsp") == 0
+                  || strcmp(long_options[option_index].name, "lspd") == 0
+                  || strcmp(long_options[option_index].name, "lspvq") == 0) {
+               assert(order == LPC_ORD);
+            } else if(strcmp(long_options[option_index].name, "lspdt_mode") == 
0) {
+               if (strcmp(optarg,"all") == 0)
+                   lspdt_mode = LSPDT_ALL;
+               else if (strcmp(optarg,"low") == 0)
+                   lspdt_mode = LSPDT_LOW;
+               else if (strcmp(optarg,"high") == 0)
+                   lspdt_mode = LSPDT_HIGH;
+               else {
+                   fprintf(stderr, "Error in lspdt_mode: %s\n", optarg);
+                   exit(1);
+               }
+            } else if(strcmp(long_options[option_index].name, "hand_voicing") 
== 0) {
+               if ((fvoicing = fopen(optarg,"rt")) == NULL) {
+                   fprintf(stderr, "Error opening voicing file: %s: %s.\n",
+                       optarg, strerror(errno));
+                    exit(1);
+                }
+           } else if(strcmp(long_options[option_index].name, "dump_pitch_e") 
== 0) {
+               if ((fjvm = fopen(optarg,"wt")) == NULL) {
+                   fprintf(stderr, "Error opening pitch & energy dump file: 
%s: %s.\n",
+                       optarg, strerror(errno));
+                    exit(1);
+                }
+           } else if(strcmp(long_options[option_index].name, "phaseexp") == 0) 
{
+               strcpy(phaseexp_arg, optarg);
+           } else if(strcmp(long_options[option_index].name, "ampexp") == 0) {
+               strcpy(ampexp_arg, optarg);
+           } else if(strcmp(long_options[option_index].name, "gain") == 0) {
+               gain = atof(optarg);
+           } else if(strcmp(long_options[option_index].name, "rate") == 0) {
+                if(strcmp(optarg,"3200") == 0) {
+                   lpc_model = 1; order = 10;
+                   scalar_quant_Wo_e = 1;
+                   lspd = 1;
+                   phase0 = 1;
+                   postfilt = 1;
+                   decimate = 1;
+                   lpcpf = 1;
+               } else if(strcmp(optarg,"2400") == 0) {
+                   lpc_model = 1; order = 10;
+                   vector_quant_Wo_e = 1;
+                   lsp = 1;
+                   phase0 = 1;
+                   postfilt = 1;
+                   decimate = 1;
+                   lpcpf = 1;
+               } else if(strcmp(optarg,"1400") == 0) {
+                   lpc_model = 1; order = 10;
+                   vector_quant_Wo_e = 1;
+                   lsp = 1; lspdt = 1;
+                   phase0 = 1;
+                   postfilt = 1;
+                   decimate = 1;
+                   dt = 1;
+                   lpcpf = 1;
+                } else if(strcmp(optarg,"1200") == 0) {
+                   lpc_model = 1; order = 10;
+                   scalar_quant_Wo_e = 1;
+                   lspjvm = 1; lspdt = 1;
+                   phase0 = 1;
+                   postfilt = 1;
+                   decimate = 1;
+                   dt = 1;
+                   lpcpf = 1;
+                } else {
+                    fprintf(stderr, "Error: invalid output rate %s\n", optarg);
+                    exit(1);
+                }
+            }
+            break;
+
+         case 'h':
+            print_help(long_options, num_opts, argv);
+            break;
+
+         case 'o':
+            if (strcmp(optarg, "-") == 0) fout = stdout;
+            else if ((fout = fopen(optarg,"wb")) == NULL) {
+               fprintf(stderr, "Error opening output speech file: %s: %s.\n",
+                   optarg, strerror(errno));
+               exit(1);
+            }
+            strcpy(out_file,optarg);
+            break;
+
+         default:
+            /* This will never be reached */
+            break;
+        }
+    }
 
-  decimate = switch_present("--dec",argc,argv);
+    /* Input file */
 
-  arg = switch_present("--resample",argc,argv);
-  resample = atoi(argv[arg+1]);
+     if ((fin = fopen(argv[optind],"rb")) == NULL) {
+       fprintf(stderr, "Error opening input speech file: %s: %s.\n",
+               argv[optind], strerror(errno));
+       exit(1);
+    }
 
-  /* Initialise ------------------------------------------------------------*/
+    ex_phase[0] = 0;
+    bg_est = 0.0;
+    Woe_[0] = Woe_[1] = 1.0;
 
-  make_analysis_window(w,W);
-  make_synthesis_window(Pn);
-  quantise_init();
+    /*
+      printf("lspd: %d lspdt: %d lspdt_mode: %d  phase0: %d postfilt: %d "
+          "decimate: %d dt: %d\n",lspd,lspdt,lspdt_mode,phase0,postfilt,
+          decimate,dt);
+    */
 
-  /* Main loop ------------------------------------------------------------*/
+    /* Initialise 
------------------------------------------------------------*/
 
-  frames = 0;
-  sum_snr = 0;
-  while(fread(buf,sizeof(short),N,fin)) {
-    frames++;
-    //printf("frame: %d", frames);
+    fft_fwd_cfg = kiss_fft_alloc(FFT_ENC, 0, NULL, NULL); /* fwd FFT,used in 
several places   */
+    fft_inv_cfg = kiss_fft_alloc(FFT_DEC, 1, NULL, NULL); /* inverse FFT, used 
just for synth */
+    make_analysis_window(fft_fwd_cfg, w, W);
+    make_synthesis_window(Pn);
+    quantise_init();
+    if (phaseexp)
+       pexp = phase_experiment_create();
+    if (ampexp)
+       aexp = amp_experiment_create();
 
-    /* Read input speech */
+    /*----------------------------------------------------------------*\
 
-    for(i=0; i<M-N; i++)
-      Sn[i] = Sn[i+N];
-    for(i=0; i<N; i++) {
-       //Sn[i+M-N] = hpf((float)buf[i], hpf_states);
-       Sn[i+M-N] = (float)buf[i];
-    }
+                            Main Loop
 
-    /* Estimate pitch */
+    \*----------------------------------------------------------------*/
 
-    nlp(nlp_states,Sn,N,M,P_MIN,P_MAX,&pitch,Sw,&prev_Wo);
-    model.Wo = TWO_PI/pitch;
+    frames = 0;
+    sum_snr = 0;
+    while(fread(buf,sizeof(short),N,fin)) {
+       frames++;
+       //printf("frame: %d ", frames);
 
-    /* estimate model parameters */
+       /* Read input speech */
 
-    dft_speech(Sw, Sn, w);
-    two_stage_pitch_refinement(&model, Sw);
-    estimate_amplitudes(&model, Sw, W);
-#ifdef DUMP
-    dump_Sn(Sn); dump_Sw(Sw); dump_model(&model);
-#endif
+       for(i=0; i<M-N; i++) {
+           Sn[i] = Sn[i+N];
+           Sn_pre[i] = Sn_pre[i+N];
+       }
+       for(i=0; i<N; i++)
+           Sn[i+M-N] = buf[i];
 
-    /* optional zero-phase modelling */
+       pre_emp(&Sn_pre[M-N], &Sn[M-N], &pre_mem, N);
 
-    if (phase0) {
-       float Wn[M];                    /* windowed speech samples */
-       float Rk[LPC_MAX+1];            /* autocorrelation coeffs  */
 
-#ifdef DUMP
-       dump_phase(&model.phi[0], model.L);
-#endif
+       /*------------------------------------------------------------*\
 
-       /* find aks here, these are overwritten if LPC modelling is enabled */
+                      Estimate Sinusoidal Model Parameters
 
-       for(i=0; i<M; i++)
-           Wn[i] = Sn[i]*w[i];
-       autocorrelate(Wn,Rk,M,order);
-       levinson_durbin(Rk,ak,order);
+       \*------------------------------------------------------------*/
 
-#ifdef DUMP
-       dump_ak(ak, LPC_ORD);
-#endif
+       nlp(nlp_states,Sn,N,P_MIN,P_MAX,&pitch,Sw,W,&prev_uq_Wo);
+       model.Wo = TWO_PI/pitch;
 
-       /* determine voicing */
+       dft_speech(fft_fwd_cfg, Sw, Sn, w);
+       two_stage_pitch_refinement(&model, Sw);
+       estimate_amplitudes(&model, Sw, W, 1);
+       uq_Wo = model.Wo;
 
-       snr = est_voicing_mbe(&model, Sw, W, Sw_, Ew, prev_Wo);
-#ifdef DUMP
-       dump_Sw_(Sw_);
-       dump_Ew(Ew);
-       dump_snr(snr);
-#endif
+        #ifdef DUMP
+       dump_Sn(Sn); dump_Sw(Sw); dump_model(&model);
+        #endif
 
-       /* just to make sure we are not cheating - kill all phases */
+       if (ampexp)
+           amp_experiment(aexp, &model, ampexp_arg);
 
-       for(i=0; i<MAX_AMP; i++)
-           model.phi[i] = 0;
+       if (phaseexp) {
+            #ifdef DUMP
+           dump_phase(&model.phi[0], model.L);
+            #endif
+           phase_experiment(pexp, &model, phaseexp_arg);
+            #ifdef DUMP
+           dump_phase_(&model.phi[0], model.L);
+            #endif
+       }
 
-       if (hand_voicing) {
-           fscanf(fvoicing,"%d\n",&model.voiced);
+       if (hi) {
+           int m;
+           for(m=1; m<model.L/2; m++)
+               model.A[m] = 0.0;
+           for(m=3*model.L/4; m<=model.L; m++)
+               model.A[m] = 0.0;
        }
-    }
 
-    /* optional LPC model amplitudes */
+       /*------------------------------------------------------------*\
 
-    if (lpc_model) {
-       int   lsp_indexes[LPC_MAX];
+                            Zero-phase modelling
 
-       e = speech_to_uq_lsps(lsps, ak, Sn, w, order);
+       \*------------------------------------------------------------*/
 
-       if (lsp) {
-           encode_lsps(lsp_indexes, lsps, LPC_ORD);
-           decode_lsps(lsps, lsp_indexes, LPC_ORD);
-           bw_expand_lsps(lsps, LPC_ORD);
-           lsp_to_lpc(lsps, ak, LPC_ORD);
-       }
+       if (phase0) {
+           float Wn[M];                        /* windowed speech samples */
+           float Rk[LPC_MAX+1];                /* autocorrelation coeffs  */
 
-       if (lspd) {
-           float lsps_[LPC_ORD];
+            #ifdef DUMP
+           dump_phase(&model.phi[0], model.L);
+            #endif
 
-           lspd_quantise(lsps, lsps_, LPC_ORD);
-           lsp_to_lpc(lsps_, ak, LPC_ORD);
-       }
+           /* find aks here, these are overwritten if LPC modelling is enabled 
*/
 
-       if (lspdvq) {
-           float lsps_[LPC_ORD];
+           if (prede) {
+               for(i=0; i<M; i++)
+                   Wn[i] = Sn_pre[i]*w[i];
+           }
+           else {
 
-           lspdvq_quantise(lsps, lsps_, LPC_ORD);
-           lsp_to_lpc(lsps_, ak, LPC_ORD);
-       }
+               for(i=0; i<M; i++)
+                   Wn[i] = Sn[i]*w[i];
+           }
+           autocorrelate(Wn,Rk,M,order);
+           levinson_durbin(Rk,ak,order);
 
-       e = decode_energy(encode_energy(e));
-       model.Wo = decode_Wo(encode_Wo(model.Wo));
+           /* determine voicing */
 
-       aks_to_M2(ak, order, &model, e, &snr, 1);
-       apply_lpc_correction(&model);
-       sum_snr += snr;
-#ifdef DUMP
-        dump_quantised_model(&model);
-#endif
-    }
+           snr = est_voicing_mbe(&model, Sw, W, Sw_, Ew, prev_uq_Wo);
 
-    /* optional resampling of model amplitudes */
+           if (dump_pitch_e)
+               fprintf(fjvm, "%f %f %d ", model.Wo, snr, model.voiced);
 
-    printf("frames=%d\n", frames);
-    if (resample) {
-       snr = resample_amp_nl(&model, resample, AresdB_prev);
-       sum_snr += snr;
-#ifdef DUMP
-        dump_quantised_model(&model);
-#endif
-    }
+           //printf("snr %3.2f v: %d Wo: %f prev_Wo: %f\n", snr, model.voiced,
+           //     model.Wo, prev_uq_Wo);
+            #ifdef DUMP
+           dump_Sw_(Sw_);
+           dump_Ew(Ew);
+           dump_snr(snr);
+            #endif
 
-    /* option decimation to 20ms rate, which enables interpolation
-       routine to synthesise in between frame */
+           /* just to make sure we are not cheating - kill all phases */
 
-    if (decimate) {
-       if (!phase0) {
-           printf("needs --phase0 to resample phase for interpolated Wo\n");
-           exit(0);
-       }
-       if (!lpc_model) {
-           printf("needs --lpc 10 to resample amplitudes\n");
-           exit(0);
+           for(i=0; i<=MAX_AMP; i++)
+               model.phi[i] = 0;
+
+           if (hand_voicing) {
+               fscanf(fvoicing,"%d\n",&model.voiced);
+           }
        }
 
-       /* odd frame - interpolate */
+       /*------------------------------------------------------------*\
+
+               LPC model amplitudes and LSP quantisation
+
+       \*------------------------------------------------------------*/
+
+       if (lpc_model) {
+
+           if (prede)
+               e = speech_to_uq_lsps(lsps, ak, Sn_pre, w, order);
+           else
+               e = speech_to_uq_lsps(lsps, ak, Sn, w, order);
+
+            #ifdef DUMP
+           dump_ak(ak, LPC_ORD);
+            #endif
+
+           /* tracking down -ve energy values with BW expansion */
+           /*
+           if (e < 0.0) {
+               int i;
+               FILE*f=fopen("x.txt","wt");
+               for(i=0; i<M; i++)
+                   fprintf(f,"%f\n", Sn[i]);
+               fclose(f);
+               printf("e = %f frames = %d\n", e, frames);
+               for(i=0; i<order; i++)
+                   printf("%f ", ak[i]);
+               exit(0);
+           }
+           */
+
+           if (dump_pitch_e)
+               fprintf(fjvm, "%f\n", e);
+
+            #ifdef DUMP
+           /* dump order is different if we are decimating */
+           if (!decimate)
+               dump_lsp(lsps);
+           for(i=0; i<LPC_ORD; i++)
+               prev_lsps[i] = lsps[i];
+            #endif
+
+           /* various LSP quantisation schemes */
+
+           if (lsp) {
+               encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD);
+               decode_lsps_scalar(lsps_, lsp_indexes, LPC_ORD);
+               bw_expand_lsps(lsps_, LPC_ORD, 50.0, 100.0);
+               lsp_to_lpc(lsps_, ak, LPC_ORD);
+           }
+
+           if (lspd) {
+               encode_lspds_scalar(lsp_indexes, lsps, LPC_ORD);
+               decode_lspds_scalar(lsps_, lsp_indexes, LPC_ORD);
+               lsp_to_lpc(lsps_, ak, LPC_ORD);
+           }
+
+#ifdef __EXPERIMENTAL__
+           if (lspvq) {
+               lspvq_quantise(lsps, lsps_, LPC_ORD);
+               bw_expand_lsps(lsps_, LPC_ORD, 50.0, 100.0);
+               lsp_to_lpc(lsps_, ak, LPC_ORD);
+           }
+#endif
+
+           if (lspjvm) {
+               /* Jean-Marc's multi-stage, split VQ */
+               lspjvm_quantise(lsps, lsps_, LPC_ORD);
+               {
+                   float lsps_bw[LPC_ORD];
+                   memcpy(lsps_bw, lsps_, sizeof(float)*LPC_ORD);
+                   bw_expand_lsps(lsps_bw, LPC_ORD, 50.0, 100.0);
+                   lsp_to_lpc(lsps_bw, ak, LPC_ORD);
+               }
+           }
+
+#ifdef __EXPERIMENTAL__
+           if (lspanssi) {
+               /*  multi-stage VQ from Anssi Ramo OH3GDD */
+
+               lspanssi_quantise(lsps, lsps_, LPC_ORD, 5);
+               bw_expand_lsps(lsps_, LPC_ORD, 50.0, 100.0);
+               lsp_to_lpc(lsps_, ak, LPC_ORD);
+           }
+#endif
 
-       if (frames%2) {
+           /* experimenting with non-linear LSP spacing to see if
+              it's just noticable */
+
+           if (lspjnd) {
+               for(i=0; i<LPC_ORD; i++)
+                   lsps_[i] = lsps[i];
+               locate_lsps_jnd_steps(lsps_, LPC_ORD);
+               lsp_to_lpc(lsps_, ak, LPC_ORD);
+           }
+
+           /* Another experiment with non-linear LSP spacing, this
+              time using a scaled version of mel frequency axis
+              warping.  The scaling is such that the integer output
+              can be directly sent over the channel.
+           */
+
+           if (lspmel) {
+               float f, f_;
+               int mel[LPC_ORD];
+
+               for(i=0; i<LPC_ORD; i++) {
+                   f = (4000.0/PI)*lsps[i];
+                   mel[i] = floor(100.0*log10(1.0 + f/700.0) + 0.5);
+               }
+
+               for(i=1; i<LPC_ORD; i++) {
+                   if (mel[i] == mel[i-1])
+                       mel[i]++;
+               }
+
+               for(i=0; i<LPC_ORD; i++) {
+                   f_ = 700.0*( pow(10.0, (float)mel[i]/100.0) - 1.0);
+                   lsps_[i] = f_*(PI/4000.0);
+               }
+               for(i=5; i<10; i++) {
+                   lsps_[i] = lsps[i];
+               }
+
+               lsp_to_lpc(lsps_, ak, LPC_ORD);
+           }
+
+           /* we need lsp__prev[] for lspdt and decimate.  If no
+              other LSP quantisation is used we use original LSPs as
+              there is no quantised version available. TODO: this is
+              mess, we should have structures and standard
+              nomenclature for previous frames values, lsp_[]
+              shouldn't be overwritten as we may want to dump it for
+              analysis.  Re-design some time.
+           */
+
+           if (!lsp && !lspd && !lspvq && !lspres && !lspjvm && !lspanssi && 
!lspjnd && !lspmel)
+               for(i=0; i<LPC_ORD; i++)
+                   lsps_[i] = lsps[i];
+
+           /* Odd frames are generated by quantising the difference
+              between the previous frames LSPs and this frames */
+
+#ifdef __EXPERIMENTAL__
+           if (lspdt && !decimate) {
+               if (frames%2) {
+                   lspdt_quantise(lsps, lsps_, lsps__prev, lspdt_mode);
+                   bw_expand_lsps(lsps_, LPC_ORD, 50.0, 100.0);
+                   lsp_to_lpc(lsps_, ak, LPC_ORD);
+               }
+               for(i=0; i<LPC_ORD; i++)
+                   lsps__prev[i] = lsps_[i];
+           }
+#endif
 
-           interp_model.voiced = voiced1;
+           /*
+              When decimation is enabled we only send LSPs to the
+              decoder on odd frames.  In the Delta-time LSPs case we
+              encode every second odd frame (i.e. every 3rd frame out
+              of 4) by quantising the difference between the 1st
+              frames LSPs and the 3rd frames:
+
+              10ms, frame 1: discard (interpolate at decoder)
+              20ms, frame 2: send "full" LSP frame
+              30ms, frame 3: discard (interpolate at decoder)
+              40ms, frame 4: send LSPs differences between frame 4 and frame 2
+           */
+
+           if (lspdt && decimate) {
+               /* print previous LSPs to make sure we are using the right set 
*/
+               if ((frames%4) == 0) {
+                   //printf("  lspdt ");
+                    //#define LSPDT
+                    #ifdef LSPDT
+                   lspdt_quantise(lsps, lsps_, lsps__prev2, lspdt_mode);
+                    #else
+                   for(i=0; i<LPC_ORD; i++)
+                       lsps_[i] = lsps__prev2[i];
+                    #endif
+                   bw_expand_lsps(lsps_, LPC_ORD, 50.0, 100.0);
+                   lsp_to_lpc(lsps_, ak, LPC_ORD);
+               }
+
+               for(i=0; i<LPC_ORD; i++) {
+                   lsps__prev2[i] = lsps__prev[i];
+                   lsps__prev[i] = lsps_[i];
+               }
+           }
+            #ifdef DUMP
+           /* if using decimated (20ms) frames we dump interp
+              LSPs below */
+           if (!decimate)
+               dump_lsp_(lsps_);
+            #endif
+
+           if (scalar_quant_Wo_e) {
+
+               e = decode_energy(encode_energy(e));
+
+               if (!decimate) {
+                   /* we send params every 10ms, delta-time every 20ms */
+                   if (dt && (frames % 2))
+                       model.Wo = decode_Wo_dt(encode_Wo_dt(model.Wo, 
prev_Wo),prev_Wo);
+                   else
+                       model.Wo = decode_Wo(encode_Wo(model.Wo));
+               }
+
+               if (decimate) {
+                   /* we send params every 20ms */
+                   if (dt && ((frames % 4) == 0)) {
+                       /* delta-time every 40ms */
+                       model.Wo = decode_Wo_dt(encode_Wo_dt(model.Wo, 
prev__Wo),prev__Wo);
+                   }
+                   else
+                       model.Wo = decode_Wo(encode_Wo(model.Wo));
+               }
+
+               model.L  = PI/model.Wo; /* if we quantise Wo re-compute L */
+           }
+
+           if (vector_quant_Wo_e) {
+
+               /* JVM's experimental joint Wo & LPC energy quantiser */
+
+               //printf("\nWo %f e %f\n", model.Wo, e);
+               quantise_WoE(&model, &e, Woe_);
+               //printf("Wo %f e %f\n", model.Wo, e);
+
+           }
+
+           aks_to_M2(fft_fwd_cfg, ak, order, &model, e, &snr, 1, simlpcpf, 
lpcpf, 1, LPCPF_BETA, LPCPF_GAMMA);
+           apply_lpc_correction(&model);
+
+            #ifdef DUMP
+           dump_ak_(ak, LPC_ORD);
+            #endif
+
+           /* note SNR on interpolated frames can't be measured properly
+              by comparing Am as L has changed.  We can dump interp lsps
+              and compare them,
+           */
+            #ifdef DUMP
+           dump_lpc_snr(snr);
+            #endif
+           sum_snr += snr;
+            #ifdef DUMP
+           dump_quantised_model(&model);
+            #endif
+       }
 
-           #ifdef LOG_LIN_INTERP
-           interpolate(&interp_model, &prev_model, &model);
-           #else
-           interpolate_lsp(&interp_model, &prev_model, &model,
-                           prev_lsps, prev_e, lsps, e, ak_interp);
-           apply_lpc_correction(&interp_model);
-           #endif
+       /*------------------------------------------------------------*\
+
+                         Decimation to 20ms frame rate
+
+       \*------------------------------------------------------------*/
+
+       if (decimate) {
+           float lsps_interp[LPC_ORD];
+
+           if (!phase0) {
+               printf("needs --phase0 to resample phase for interpolated 
Wo\n");
+               exit(0);
+           }
+           if (!lpc_model) {
+               printf("needs --lpc 10 to resample amplitudes\n");
+               exit(0);
+           }
+
+           /*
+              Each 20ms we synthesise two 10ms frames:
+
+              frame 1: discard except for voicing bit
+              frame 2: interpolate frame 1 LSPs from frame 2 and frame 0
+                       synthesise frame 1 and frame 2 speech
+              frame 3: discard except for voicing bit
+              frame 4: interpolate frame 3 LSPs from frame 4 and frame 2
+                       synthesise frame 3 and frame 4 speech
+           */
+
+           if ((frames%2) == 0) {
+               //printf("frame: %d\n", frames);
+
+               /* decode interpolated frame */
+
+               interp_model.voiced = voiced1;
+
+               interpolate_lsp(fft_fwd_cfg, &interp_model, &prev_model, &model,
+                               prev_lsps_, prev_e, lsps_, e, ak_interp, 
lsps_interp);
+               apply_lpc_correction(&interp_model);
+
+               /* used to compare with c2enc/c2dec version
+
+               printf("  Wo: %1.5f  L: %d v1: %d prev_e: %f\n",
+                      interp_model.Wo, interp_model.L, interp_model.voiced, 
prev_e);
+               printf("  lsps_interp: ");
+               for(i=0; i<LPC_ORD; i++)
+                   printf("%5.3f  ", lsps_interp[i]);
+               printf("\n  A..........: ");
+               for(i=0; i<10; i++)
+                   printf("%5.3f  ",interp_model.A[i]);
+
+               printf("\n  Wo: %1.5f  L: %d e: %3.2f v2: %d\n",
+                      model.Wo, model.L, e, model.voiced);
+               printf("  lsps_......: ");
+               for(i=0; i<LPC_ORD; i++)
+                   printf("%5.3f  ", lsps_[i]);
+               printf("\n  A..........: ");
+               for(i=0; i<10; i++)
+                   printf("%5.3f  ",model.A[i]);
+               printf("\n");
+               */
+
+                #ifdef DUMP
+               /* do dumping here so we get lsp dump file in correct order */
+               dump_lsp(prev_lsps);
+               dump_lsp(lsps_interp);
+               dump_lsp(lsps);
+               dump_lsp(lsps_);
+                #endif
+
+               if (phase0)
+                   phase_synth_zero_order(fft_fwd_cfg, &interp_model, 
ak_interp, ex_phase,
+                                          order);
+               if (postfilt)
+                   postfilter(&interp_model, &bg_est);
+               synth_one_frame(fft_inv_cfg, buf, &interp_model, Sn_, Pn, 
prede, &de_mem, gain);
+               //printf("  buf[0] %d\n", buf[0]);
+               if (fout != NULL)
+                   fwrite(buf,sizeof(short),N,fout);
+
+               /* decode this frame */
+
+               if (phase0)
+                   phase_synth_zero_order(fft_fwd_cfg, &model, ak, ex_phase, 
order);
+               if (postfilt)
+                   postfilter(&model, &bg_est);
+               synth_one_frame(fft_inv_cfg, buf, &model, Sn_, Pn, prede, 
&de_mem, gain);
+               //printf("  buf[0] %d\n", buf[0]);
+               if (fout != NULL)
+                   fwrite(buf,sizeof(short),N,fout);
+
+               /* update states for next time */
+
+               prev_model = model;
+               for(i=0; i<LPC_ORD; i++)
+                   prev_lsps_[i] = lsps_[i];
+               prev_e = e;
+           }
+           else {
+               voiced1 = model.voiced;
+           }
+       }
+       else {
+           /* no decimation - sythesise each 10ms frame immediately */
 
            if (phase0)
-               phase_synth_zero_order(&interp_model, ak_interp, ex_phase,
-                                      order);
-           if (postfilt)
-               postfilter(&interp_model, &bg_est);
-           synth_one_frame(buf, &interp_model, Sn_, Pn);
-           if (fout != NULL) fwrite(buf,sizeof(short),N,fout);
+               phase_synth_zero_order(fft_fwd_cfg, &model, ak, ex_phase, 
order);
 
-           if (phase0)
-               phase_synth_zero_order(&model, ak, ex_phase, order);
            if (postfilt)
                postfilter(&model, &bg_est);
-           synth_one_frame(buf, &model, Sn_, Pn);
+           synth_one_frame(fft_inv_cfg, buf, &model, Sn_, Pn, prede, &de_mem, 
gain);
            if (fout != NULL) fwrite(buf,sizeof(short),N,fout);
-
-           prev_model = model;
-           for(i=0; i<LPC_ORD; i++)
-               prev_lsps[i] = lsps[i];
-           prev_e = e;
-       }
-       else {
-           voiced1 = model.voiced;
        }
+
+       prev__Wo = prev_Wo;
+       prev_Wo = model.Wo;
+       prev_uq_Wo = uq_Wo;
+       //if (frames == 8) {
+       //    exit(0);
+       //}
     }
-    else {
-       if (phase0)
-           phase_synth_zero_order(&model, ak, ex_phase, order);
-       if (postfilt)
-           postfilter(&model, &bg_est);
-       synth_one_frame(buf, &model, Sn_, Pn);
-       if (fout != NULL) fwrite(buf,sizeof(short),N,fout);
-    }
-    prev_Wo = TWO_PI/pitch;
-  }
-  fclose(fin);
 
-  if (fout != NULL)
-    fclose(fout);
+    /*----------------------------------------------------------------*\
 
-  if (lpc_model || resample)
-      printf("SNR av = %5.2f dB\n", sum_snr/frames);
+                            End Main Loop
 
-#ifdef DUMP
-  if (dump)
-      dump_off();
-#endif
+    \*----------------------------------------------------------------*/
+
+    fclose(fin);
 
-  if (hand_voicing)
-    fclose(fvoicing);
+    if (fout != NULL)
+       fclose(fout);
 
-  nlp_destroy(nlp_states);
+    if (lpc_model)
+       printf("SNR av = %5.2f dB\n", sum_snr/frames);
 
-  return 0;
+    if (phaseexp)
+       phase_experiment_destroy(pexp);
+    if (ampexp)
+       amp_experiment_destroy(aexp);
+    #ifdef DUMP
+    if (dump)
+       dump_off();
+    #endif
+
+    if (hand_voicing)
+       fclose(fvoicing);
+
+    nlp_destroy(nlp_states);
+
+    return 0;
 }
 
-void synth_one_frame(short buf[], MODEL *model, float Sn_[], float Pn[])
+void synth_one_frame(kiss_fft_cfg fft_inv_cfg, short buf[], MODEL *model, 
float Sn_[], float Pn[], int prede, float *de_mem, float gain)
 {
     int     i;
 
-    synthesise(Sn_, model, Pn, 1);
+    synthesise(fft_inv_cfg, Sn_, model, Pn, 1);
+    if (prede)
+        de_emp(Sn_, Sn_, de_mem, N);
 
     for(i=0; i<N; i++) {
+       Sn_[i] *= gain;
        if (Sn_[i] > 32767.0)
            buf[i] = 32767;
        else if (Sn_[i] < -32767.0)
@@ -467,3 +893,36 @@ void synth_one_frame(short buf[], MODEL *model, float 
Sn_[], float Pn[])
     }
 
 }
+
+void print_help(const struct option* long_options, int num_opts, char* argv[])
+{
+       int i;
+       char *option_parameters;
+
+       fprintf(stderr, "\nCodec2 - low bit rate speech codec - Simulation 
Program\n"
+               "\thttp://rowetel.com/codec2.html\n\n";
+               "usage: %s [OPTIONS] <InputFile>\n\n"
+                "Options:\n"
+                "\t-o <OutputFile>\n", argv[0]);
+        for(i=0; i<num_opts-1; i++) {
+               if(long_options[i].has_arg == no_argument) {
+                       option_parameters="";
+               } else if (strcmp("lpc", long_options[i].name) == 0) {
+                       option_parameters = " <Order>";
+               } else if (strcmp("lspdt_mode", long_options[i].name) == 0) {
+                       option_parameters = " <all|high|low>";
+               } else if (strcmp("hand_voicing", long_options[i].name) == 0) {
+                       option_parameters = " <VoicingFile>";
+               } else if (strcmp("dump_pitch_e", long_options[i].name) == 0) {
+                       option_parameters = " <Dump File>";
+               } else if (strcmp("rate", long_options[i].name) == 0) {
+                       option_parameters = " <4800|2400|1400|1200>";
+               } else if (strcmp("dump", long_options[i].name) == 0) {
+                       option_parameters = " <DumpFilePrefix>";
+               } else {
+                       option_parameters = " <UNDOCUMENTED parameter>";
+               }
+               fprintf(stderr, "\t--%s%s\n", long_options[i].name, 
option_parameters);
+       }
+       exit(1);
+}
diff --git a/gr-vocoder/lib/codec2/codebook/dlsp1.txt 
b/gr-vocoder/lib/codec2/codebook/dlsp1.txt
index d126be7..058d048 100644
--- a/gr-vocoder/lib/codec2/codebook/dlsp1.txt
+++ b/gr-vocoder/lib/codec2/codebook/dlsp1.txt
@@ -1,4 +1,12 @@
-1 16
+1 32
+25
+50
+75
+100
+125
+150
+175
+200
 225
 250
 275
@@ -15,3 +23,13 @@
 550
 575
 600
+625
+650
+675
+700
+725
+750
+775
+800
+
+
diff --git a/gr-vocoder/lib/codec2/codebook/dlsp10.txt 
b/gr-vocoder/lib/codec2/codebook/dlsp10.txt
index dea9dd9..058d048 100644
--- a/gr-vocoder/lib/codec2/codebook/dlsp10.txt
+++ b/gr-vocoder/lib/codec2/codebook/dlsp10.txt
@@ -1,9 +1,35 @@
-1 8
+1 32
+25
 50
+75
 100
+125
+150
+175
 200
+225
+250
+275
 300
+325
+350
+375
+400
 425
+450
+475
+500
+525
 550
+575
+600
+625
+650
 675
+700
+725
+750
+775
 800
+
+
diff --git a/gr-vocoder/lib/codec2/codebook/dlsp2.txt 
b/gr-vocoder/lib/codec2/codebook/dlsp2.txt
index 234bf20..058d048 100644
--- a/gr-vocoder/lib/codec2/codebook/dlsp2.txt
+++ b/gr-vocoder/lib/codec2/codebook/dlsp2.txt
@@ -1,4 +1,4 @@
-1 16
+1 32
 25
 50
 75
@@ -15,3 +15,21 @@
 350
 375
 400
+425
+450
+475
+500
+525
+550
+575
+600
+625
+650
+675
+700
+725
+750
+775
+800
+
+
diff --git a/gr-vocoder/lib/codec2/codebook/dlsp3.txt 
b/gr-vocoder/lib/codec2/codebook/dlsp3.txt
index b2ee06d..058d048 100644
--- a/gr-vocoder/lib/codec2/codebook/dlsp3.txt
+++ b/gr-vocoder/lib/codec2/codebook/dlsp3.txt
@@ -1,9 +1,35 @@
-1 8
+1 32
+25
 50
 75
 100
-120
+125
 150
+175
+200
+225
 250
+275
+300
+325
 350
+375
+400
+425
 450
+475
+500
+525
+550
+575
+600
+625
+650
+675
+700
+725
+750
+775
+800
+
+
diff --git a/gr-vocoder/lib/codec2/codebook/dlsp4.txt 
b/gr-vocoder/lib/codec2/codebook/dlsp4.txt
index dea9dd9..4a5e990 100644
--- a/gr-vocoder/lib/codec2/codebook/dlsp4.txt
+++ b/gr-vocoder/lib/codec2/codebook/dlsp4.txt
@@ -1,9 +1,35 @@
-1 8
+1 32
+25
 50
+75
 100
+125
+150
+175
 200
+250
 300
-425
+350
+400
+450
+500
 550
-675
+600
+650
+700
+750
 800
+850
+900
+950
+1000
+1050
+1100
+1150
+1200
+1250
+1300
+1350
+1400
+
+
diff --git a/gr-vocoder/lib/codec2/codebook/dlsp5.txt 
b/gr-vocoder/lib/codec2/codebook/dlsp5.txt
index dea9dd9..4a5e990 100644
--- a/gr-vocoder/lib/codec2/codebook/dlsp5.txt
+++ b/gr-vocoder/lib/codec2/codebook/dlsp5.txt
@@ -1,9 +1,35 @@
-1 8
+1 32
+25
 50
+75
 100
+125
+150
+175
 200
+250
 300
-425
+350
+400
+450
+500
 550
-675
+600
+650
+700
+750
 800
+850
+900
+950
+1000
+1050
+1100
+1150
+1200
+1250
+1300
+1350
+1400
+
+
diff --git a/gr-vocoder/lib/codec2/codebook/dlsp6.txt 
b/gr-vocoder/lib/codec2/codebook/dlsp6.txt
index dea9dd9..4a5e990 100644
--- a/gr-vocoder/lib/codec2/codebook/dlsp6.txt
+++ b/gr-vocoder/lib/codec2/codebook/dlsp6.txt
@@ -1,9 +1,35 @@
-1 8
+1 32
+25
 50
+75
 100
+125
+150
+175
 200
+250
 300
-425
+350
+400
+450
+500
 550
-675
+600
+650
+700
+750
 800
+850
+900
+950
+1000
+1050
+1100
+1150
+1200
+1250
+1300
+1350
+1400
+
+
diff --git a/gr-vocoder/lib/codec2/codebook/dlsp7.txt 
b/gr-vocoder/lib/codec2/codebook/dlsp7.txt
index dea9dd9..058d048 100644
--- a/gr-vocoder/lib/codec2/codebook/dlsp7.txt
+++ b/gr-vocoder/lib/codec2/codebook/dlsp7.txt
@@ -1,9 +1,35 @@
-1 8
+1 32
+25
 50
+75
 100
+125
+150
+175
 200
+225
+250
+275
 300
+325
+350
+375
+400
 425
+450
+475
+500
+525
 550
+575
+600
+625
+650
 675
+700
+725
+750
+775
 800
+
+
diff --git a/gr-vocoder/lib/codec2/codebook/dlsp8.txt 
b/gr-vocoder/lib/codec2/codebook/dlsp8.txt
index dea9dd9..058d048 100644
--- a/gr-vocoder/lib/codec2/codebook/dlsp8.txt
+++ b/gr-vocoder/lib/codec2/codebook/dlsp8.txt
@@ -1,9 +1,35 @@
-1 8
+1 32
+25
 50
+75
 100
+125
+150
+175
 200
+225
+250
+275
 300
+325
+350
+375
+400
 425
+450
+475
+500
+525
 550
+575
+600
+625
+650
 675
+700
+725
+750
+775
 800
+
+
diff --git a/gr-vocoder/lib/codec2/codebook/dlsp9.txt 
b/gr-vocoder/lib/codec2/codebook/dlsp9.txt
index dea9dd9..058d048 100644
--- a/gr-vocoder/lib/codec2/codebook/dlsp9.txt
+++ b/gr-vocoder/lib/codec2/codebook/dlsp9.txt
@@ -1,9 +1,35 @@
-1 8
+1 32
+25
 50
+75
 100
+125
+150
+175
 200
+225
+250
+275
 300
+325
+350
+375
+400
 425
+450
+475
+500
+525
 550
+575
+600
+625
+650
 675
+700
+725
+750
+775
 800
+
+
diff --git a/gr-vocoder/lib/codec2/codebook/gecb.txt 
b/gr-vocoder/lib/codec2/codebook/gecb.txt
new file mode 100644
index 0000000..bd3bb08
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/gecb.txt
@@ -0,0 +1,257 @@
+2 256
+2.709998 12.018395
+0.046750 -2.738813
+0.120993 8.388947
+-1.580275 -0.892307
+1.193065 -1.915609
+0.187101 -3.276788
+0.332251 -7.664550
+-1.479436 31.246122
+1.527612 27.709463
+-0.524379 5.250122
+0.553330 7.438797
+-0.843451 -1.952987
+2.263885 8.610286
+0.143143 2.365493
+0.616506 1.284268
+-1.711327 22.096672
+1.008128 17.396519
+-0.106718 1.418905
+-0.136246 14.273605
+-1.709087 -20.531881
+1.657866 -3.391068
+0.138049 -4.957845
+0.536729 -1.943748
+0.196307 36.851948
+1.272479 22.556494
+-0.670219 -1.906045
+0.382092 6.401132
+-0.756911 -4.901017
+1.829313 4.613800
+0.318794 0.736830
+0.612815 -2.075045
+-0.410151 24.787077
+1.776016 13.190924
+0.106457 -0.104492
+0.192206 10.183844
+-1.824423 -7.715654
+0.931346 4.348355
+0.308813 -4.086001
+0.397143 -11.808859
+-0.048715 41.227314
+0.877342 35.850311
+-0.759794 0.476634
+0.978593 7.674673
+-1.195056 3.038826
+2.639894 -3.411063
+0.191127 3.603507
+0.402932 1.084298
+-2.152022 18.107616
+1.546802 8.322713
+-0.143089 -4.075922
+-0.150142 5.866741
+-1.408444 -3.250696
+1.566148 -10.413164
+0.178171 -10.226697
+0.362164 -0.028556
+-0.070125 24.390722
+0.594752 17.482765
+-0.286980 -6.904069
+0.464818 10.205451
+-1.006841 -14.357209
+2.329569 -3.691613
+0.335745 2.407139
+1.019658 -3.155647
+-1.259455 7.991899
+2.383695 19.680567
+-0.094947 -2.413742
+0.209330 6.664768
+-2.221034 1.379860
+1.292387 2.046333
+0.243626 -0.890741
+0.428773 -7.193658
+-1.113744 41.341354
+2.609799 31.140514
+-0.446468 2.534188
+0.490104 4.627575
+-1.117226 -3.241744
+1.791562 8.414926
+0.156012 0.183336
+0.532447 3.154545
+-0.764484 18.513958
+0.952395 11.771298
+-0.332567 0.346987
+0.202165 14.716752
+-2.129240 -15.558954
+1.353583 -1.926790
+-0.010963 -16.336386
+0.399053 -2.790569
+0.750657 31.148336
+0.655743 24.481859
+-0.453210 -0.735879
+0.286900 6.546703
+-0.715673 -12.357815
+1.548488 3.872171
+0.271874 0.802339
+0.502073 -4.854850
+-0.497037 17.761904
+1.191161 13.954446
+0.015630 1.331566
+0.341867 8.935369
+-2.316009 -5.395058
+0.758610 1.964505
+0.241320 -3.237686
+0.267151 -11.234388
+-0.273126 32.624771
+1.753523 40.431995
+-0.784011 3.045757
+0.705987 5.661178
+-1.386400 1.353557
+2.376458 1.674851
+0.242973 4.732178
+0.491227 0.354061
+-1.606762 8.658955
+1.167111 5.987103
+-0.137601 -12.041750
+-0.251375 10.397204
+-1.431514 -8.904108
+0.988280 -13.208963
+0.261484 -6.354970
+0.395932 -0.702529
+0.283704 26.899563
+0.420959 15.441778
+-0.355804 -13.727784
+0.527372 12.398515
+-1.169559 -15.998457
+1.906688 -5.816055
+0.354492 3.851572
+0.825760 -4.162642
+-0.490190 13.057229
+2.255773 13.526449
+-0.004956 -3.237127
+0.026709 7.866448
+-1.810372 -0.451183
+1.083827 -0.183620
+0.135836 -2.266582
+0.375812 -5.512248
+-1.966443 38.682854
+1.977988 24.565481
+-0.704656 6.358810
+0.480786 7.051749
+-0.976417 -2.422727
+2.502148 6.759346
+0.083588 3.258795
+0.543629 0.910013
+-1.231959 23.091507
+0.785492 14.807000
+-0.213554 1.688002
+0.004748 18.171820
+-1.547192 -16.116837
+1.501045 -3.281141
+0.080133 -4.634724
+0.476592 -2.180929
+0.442470 40.303989
+1.072766 27.592009
+-0.594738 -4.166807
+0.422480 7.616091
+-0.927521 -7.274406
+1.991623 1.296359
+0.291307 2.398781
+0.721081 -1.950625
+-0.804256 24.929474
+1.648388 19.119692
+0.060852 -0.590639
+0.266085 9.103249
+-1.957399 -2.884607
+1.116929 2.672397
+0.354580 -2.748541
+0.330733 -14.156131
+-0.527851 39.575626
+0.991152 43.194984
+-0.589619 1.269186
+0.787401 8.730713
+-1.013800 1.025075
+2.825403 1.895381
+0.240890 2.745566
+0.427195 2.544456
+-1.953109 12.243958
+1.448616 12.060747
+-0.210492 -3.379058
+-0.056713 10.204020
+-1.652370 -5.102737
+1.294748 -12.270802
+0.111608 -8.675921
+0.326634 -1.167627
+0.021781 31.125782
+0.455335 21.468430
+-0.375440 -3.371207
+0.393620 11.301987
+-0.851456 -19.414892
+2.107030 -2.228865
+0.373233 1.924056
+0.884438 -1.720581
+-0.975127 9.840128
+2.003303 17.395407
+-0.036915 -1.111372
+0.148456 5.399970
+-1.914412 4.773819
+1.447907 0.537122
+0.194979 -1.038179
+0.495771 -9.955025
+-1.058987 32.947052
+2.011222 32.454418
+-0.309650 4.719106
+0.436082 4.635524
+-1.237105 -1.254284
+2.022740 9.428345
+0.190342 1.460767
+0.479017 2.484788
+-1.078483 16.221748
+1.207642 9.654212
+-0.258087 -1.672358
+0.071852 13.415978
+-1.877228 -16.072031
+1.289568 -4.871185
+0.067713 -13.442700
+0.435551 -4.165503
+0.466140 30.589535
+0.904895 21.597990
+-0.518369 -2.532048
+0.337363 5.637264
+-0.554975 -17.400511
+1.691879 1.145742
+0.227934 0.889297
+0.587303 -5.729732
+-0.262133 18.666620
+1.395048 17.002878
+-0.019090 4.308379
+0.304235 12.669943
+-2.074059 -6.460845
+0.920546 1.212957
+0.284927 -1.785466
+0.209724 -16.023964
+-0.636067 31.576820
+1.349887 34.677502
+-0.971625 5.300859
+0.590249 4.449709
+-1.567867 3.602385
+2.145497 4.516663
+0.296022 4.120170
+0.445299 0.868772
+-1.441931 14.128431
+1.355752 6.007401
+-0.012814 -7.496573
+-0.430000 8.500124
+-1.204693 -7.113256
+1.101018 -6.836818
+0.196463 -6.234002
+0.436747 -1.129788
+0.141052 22.854876
+0.290821 18.811443
+-0.529536 -7.732510
+0.634280 10.789847
+-1.334721 -20.325773
+1.815645 -1.903316
+0.394778 3.797577
+0.732682 -8.183819
+-0.741244 11.768337
diff --git a/gr-vocoder/lib/codec2/codebook/lsp45678910.txt 
b/gr-vocoder/lib/codec2/codebook/lsp45678910.txt
new file mode 100644
index 0000000..291d3cd
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lsp45678910.txt
@@ -0,0 +1,4097 @@
+6 4096
+1.081234  1.578844  1.855572  1.937313  2.532441  2.649806
+1.062804  1.450009  1.839560  1.956503  2.488847  2.653463
+1.101587  1.361019  1.833584  1.932414  2.505176  2.629812
+1.079058  1.376855  1.872688  1.955078  2.541337  2.633780
+1.095536  1.631036  1.866273  2.066987  2.506661  2.570431
+1.093059  1.561358  1.772473  2.123863  2.547475  2.618258
+1.093649  1.500206  1.786047  2.077115  2.483767  2.572542
+1.035022  1.485983  1.678652  2.079363  2.402344  2.513315
+1.231720  1.630566  1.849906  2.023447  2.467212  2.571610
+1.206362  1.478193  1.855647  2.009197  2.437429  2.552382
+1.204249  1.495756  1.846404  2.039977  2.500628  2.592437
+1.272025  1.438353  1.854503  2.038713  2.518717  2.620094
+1.298912  1.483356  1.838869  1.983659  2.488374  2.597006
+1.385591  1.500184  1.819431  1.981705  2.505537  2.612529
+1.413670  1.566546  1.767180  1.994490  2.569613  2.625244
+1.469053  1.626083  1.751768  2.041187  2.608951  2.658775
+1.489505  1.617638  1.689177  2.053852  2.662243  2.705533
+1.431122  1.535578  1.647319  1.810924  2.575767  2.692196
+1.411673  1.606174  1.730361  1.969368  2.628110  2.691849
+1.341020  1.639970  2.197392  2.281319  2.449714  2.625998
+1.319877  1.674826  2.101177  2.281732  2.499782  2.611482
+1.274620  1.610124  1.901436  2.235657  2.518178  2.628876
+1.172210  1.365637  1.784703  1.904448  2.538076  2.646190
+1.096161  1.350109  1.754990  1.869673  2.486568  2.605496
+1.036538  1.326195  1.729890  1.862116  2.461192  2.575454
+1.016529  1.277247  1.688801  1.808376  2.462981  2.576244
+0.968031  1.329007  1.716412  1.821357  2.481150  2.561950
+0.940641  1.283342  1.767876  1.860537  2.503139  2.594903
+0.926995  1.243331  1.738909  1.901001  2.449501  2.557636
+0.839883  1.237117  1.702150  1.812616  2.421388  2.492978
+0.924474  1.188075  1.757524  1.824899  2.455944  2.611065
+0.964230  1.207274  1.666224  1.876812  2.507149  2.580412
+0.989772  1.189729  1.693447  1.807142  2.445712  2.561953
+0.919183  1.203118  1.673832  1.772614  2.385797  2.511668
+0.978552  1.175420  1.613855  1.726871  2.328959  2.516699
+1.014543  1.254251  1.587284  1.756626  2.403061  2.510828
+1.096718  1.231168  1.557405  1.843944  2.463584  2.555458
+1.168771  1.351177  1.613931  1.831029  2.476269  2.581218
+1.176515  1.264150  1.564916  1.760486  2.483522  2.581045
+1.017969  1.249828  1.424493  1.593545  2.458340  2.525030
+1.053988  1.216029  1.517421  1.851941  2.342751  2.502327
+0.908986  1.250795  1.593917  1.887100  2.373089  2.530129
+0.993871  1.164018  1.616620  1.775732  2.569459  2.658570
+1.102483  1.386153  1.573681  1.785642  2.317931  2.508557
+1.207240  1.390831  1.551049  1.850614  2.335983  2.494330
+0.905032  1.416478  1.580046  1.841825  2.503807  2.601603
+0.795890  1.107933  1.597705  2.015496  2.402148  2.534611
+0.732401  1.158610  1.557468  1.938003  2.626415  2.705430
+0.859670  1.129062  1.671859  1.953992  2.514790  2.615870
+0.921647  1.245355  1.683753  1.894457  2.599645  2.716564
+0.845409  1.194759  1.767314  1.844514  2.589767  2.716944
+0.977678  1.141401  1.667109  1.923833  2.632008  2.689070
+0.951137  1.122551  1.714183  1.885895  2.535763  2.672112
+1.029949  1.159554  1.739443  1.928325  2.488185  2.623518
+0.925634  1.225929  1.751801  1.970749  2.532895  2.621066
+1.012300  1.211427  1.793946  1.885857  2.467267  2.572492
+0.993978  1.137467  1.743472  1.840886  2.390082  2.566385
+0.989822  1.173068  1.687559  1.948929  2.325527  2.473423
+0.955854  1.237231  1.807406  2.116766  2.391031  2.502779
+1.103361  1.357985  1.852236  2.097091  2.392749  2.553242
+1.128873  1.440897  1.927907  2.176697  2.407985  2.544276
+1.316127  1.575436  1.964565  2.158944  2.485840  2.576132
+1.469605  1.772101  1.954837  2.164070  2.399616  2.481917
+1.506520  1.754882  2.018413  2.249491  2.486272  2.607615
+1.524190  1.776451  2.054579  2.275694  2.584977  2.669083
+1.518000  1.850281  2.026435  2.301875  2.577528  2.669180
+1.422050  1.788979  1.967476  2.184773  2.596851  2.699678
+1.208408  1.434703  1.923623  2.003769  2.602930  2.685007
+1.221170  1.436565  1.879969  2.033402  2.498146  2.695421
+1.217714  1.375982  1.908609  1.973031  2.480559  2.645396
+1.200348  1.412239  1.863276  2.054536  2.409232  2.646327
+1.439453  1.675933  2.064707  2.273226  2.606450  2.696215
+1.547568  1.956021  2.083785  2.387077  2.634316  2.711216
+1.745365  1.995260  2.176270  2.409488  2.632251  2.707416
+1.819289  1.982164  2.210166  2.452194  2.603770  2.664517
+1.669555  1.940179  2.100875  2.386942  2.530819  2.630866
+1.597684  1.945913  2.072836  2.338891  2.544245  2.608247
+1.656152  1.888690  1.984550  2.301133  2.510775  2.586360
+1.618800  1.898863  2.024738  2.291312  2.440530  2.560289
+1.481284  1.826210  1.971921  2.192909  2.417020  2.530293
+1.318733  1.581540  1.845445  2.163997  2.389227  2.505418
+1.341326  1.565852  1.802875  2.218482  2.430769  2.545834
+1.318506  1.412657  1.677620  2.182351  2.372753  2.476532
+1.243720  1.456674  1.665712  2.126711  2.332874  2.438449
+1.152502  1.458855  1.582937  2.037521  2.342102  2.428296
+1.025383  1.407599  1.551528  1.846789  2.282863  2.385436
+0.876560  1.384326  1.582900  1.741935  2.239923  2.338453
+0.953781  1.441879  1.592404  1.764174  2.294091  2.474201
+0.899968  1.454031  1.634363  1.724312  2.353403  2.597502
+0.784159  1.423933  1.737258  1.855960  2.390032  2.614540
+0.802442  1.397066  1.658548  1.816788  2.429390  2.500099
+0.863071  1.318492  1.646022  1.812971  2.398098  2.503855
+0.896870  1.306239  1.671592  1.902175  2.466526  2.601523
+0.999503  1.304292  1.708420  1.899036  2.512342  2.655191
+1.045277  1.266302  1.669631  1.846323  2.517066  2.637484
+1.038456  1.158529  1.643778  1.865279  2.583201  2.658938
+1.026317  1.219306  1.768348  1.840920  2.538168  2.673329
+1.080965  1.215431  1.730192  1.836927  2.236858  2.608870
+1.101801  1.431508  1.752078  1.918964  2.091244  2.538958
+1.178729  1.297314  1.724099  1.850753  2.310291  2.621525
+1.151182  1.239683  1.754792  1.850524  2.539101  2.705992
+1.202697  1.300604  1.763340  1.867428  2.470717  2.664655
+1.261122  1.368681  1.753282  1.846646  2.461515  2.652599
+1.263075  1.364289  1.797670  1.876939  2.543725  2.660224
+1.320149  1.415925  1.809830  1.903217  2.515554  2.648236
+1.339872  1.459354  1.806677  1.924576  2.491477  2.587047
+1.355170  1.451772  1.763405  1.944161  2.472633  2.561167
+1.327925  1.428910  1.704448  1.914816  2.397366  2.503472
+1.307600  1.415352  1.616295  1.840793  2.322166  2.470994
+1.248247  1.349207  1.617615  1.772735  2.250680  2.486533
+1.096572  1.355681  1.626115  1.941988  2.313846  2.498213
+1.012526  1.342839  1.647854  1.907164  2.435934  2.533191
+0.944393  1.399280  1.642998  1.931993  2.331977  2.489908
+0.883306  1.402338  1.706359  2.025366  2.373713  2.543710
+0.829559  1.235771  1.712746  2.184853  2.386736  2.544183
+0.923799  1.513109  1.703086  2.105291  2.476476  2.555162
+0.772688  1.443301  1.656120  2.053011  2.450442  2.532517
+0.776285  1.403196  1.734016  1.935257  2.464085  2.566799
+0.782396  1.418811  1.758875  1.973225  2.548330  2.610298
+0.789572  1.411082  1.771533  2.060410  2.540262  2.631254
+0.774326  1.288019  1.837269  1.960951  2.512420  2.581626
+0.811751  1.274027  1.810006  1.885738  2.565463  2.639219
+0.844982  1.320831  1.873915  1.944600  2.561048  2.661720
+0.881256  1.695357  1.906981  2.078886  2.618546  2.678654
+1.099890  1.727818  1.971319  2.153135  2.509688  2.602947
+1.173850  1.685437  1.917457  2.147432  2.383055  2.567035
+1.101548  1.543219  1.820605  2.055324  2.338724  2.585028
+0.975012  1.379716  1.776625  2.033293  2.194151  2.518224
+0.967054  1.082459  1.618973  2.077928  2.206837  2.370886
+1.009607  1.120613  1.534181  2.088528  2.282936  2.420584
+0.899159  1.208523  1.423691  1.970324  2.287269  2.498904
+0.879682  1.314480  1.479489  1.689360  2.209743  2.285765
+1.033473  1.243843  1.473137  1.667992  2.159422  2.255044
+1.048412  1.255890  1.536997  1.820047  2.142252  2.313751
+1.048246  1.189264  1.705109  1.835993  2.105450  2.372062
+1.034320  1.138878  1.514616  1.829657  2.170447  2.425608
+1.103878  1.217645  1.622150  1.805848  2.027526  2.376811
+1.087235  1.195012  1.559018  1.895036  2.250122  2.379205
+1.130013  1.293868  1.692397  1.858880  2.197201  2.349063
+1.162892  1.304601  1.691021  1.969323  2.268614  2.430288
+1.151808  1.257932  1.673832  1.902017  2.189155  2.458708
+1.168445  1.271828  1.557328  2.084152  2.308031  2.420367
+1.235095  1.340187  1.656794  2.095155  2.283187  2.409638
+1.252394  1.355363  1.609848  2.085193  2.332714  2.488870
+1.226314  1.343994  1.673049  2.215533  2.459996  2.546921
+1.408182  1.566449  1.701931  2.155097  2.540243  2.588591
+1.303998  1.548995  1.653578  2.128738  2.589470  2.633320
+1.312529  1.488936  1.690548  1.982880  2.558390  2.622521
+1.303590  1.485664  1.772996  1.991417  2.555629  2.650059
+1.257202  1.528917  1.880489  2.045674  2.400087  2.567493
+1.294719  1.634324  1.911539  2.046657  2.438083  2.611133
+1.328444  1.716065  1.850301  2.021260  2.507052  2.612864
+1.138077  1.269039  1.792588  1.898148  2.530410  2.653563
+1.024794  1.145542  1.688222  1.812928  2.425037  2.650928
+1.056656  1.178042  1.590336  1.747349  2.368449  2.618711
+0.994299  1.110839  1.632651  1.730538  2.337688  2.550296
+0.960030  1.103482  1.632800  1.745079  2.197252  2.530535
+0.952099  1.078914  1.704160  1.837306  2.319065  2.544307
+0.901034  1.074801  1.653662  1.788590  2.393831  2.533117
+0.970595  1.130054  1.568353  1.820966  2.445105  2.563373
+0.883200  1.029140  1.480583  1.884365  2.321620  2.470715
+0.817959  0.941844  1.410138  1.540709  2.174043  2.482774
+0.772028  0.888033  1.490117  1.717092  2.324349  2.560462
+0.874200  1.020101  1.571479  1.746811  2.437393  2.561332
+0.827282  1.010026  1.605382  1.750680  2.261846  2.481604
+0.790605  1.149000  1.653820  1.781055  2.358642  2.491606
+0.746581  0.961080  1.604908  1.879005  2.319270  2.551585
+0.845418  0.969530  1.696169  1.890927  2.301880  2.621489
+0.826083  1.016050  1.658604  1.852554  2.435884  2.572744
+0.804260  0.948999  1.684490  2.103337  2.475054  2.575853
+0.837016  1.029999  1.676991  1.796645  2.498023  2.631032
+0.779629  0.917041  1.607073  1.868904  2.459568  2.628902
+0.802981  0.922379  1.556141  1.967845  2.595450  2.692512
+0.821239  0.952349  1.585249  2.095797  2.593711  2.655934
+0.819528  1.109552  1.526845  1.767514  2.637798  2.710511
+0.846222  1.055717  1.707281  1.838626  2.113999  2.501403
+0.956553  1.439848  1.724902  1.939820  2.145194  2.431913
+1.334292  1.551594  1.721399  2.019173  2.178003  2.329439
+1.247359  1.571459  1.834521  2.114156  2.268206  2.489811
+1.223145  1.573420  1.846247  2.016089  2.219280  2.457849
+1.239932  1.537791  1.822800  2.046476  2.444455  2.578055
+1.299681  1.557742  1.798304  2.080692  2.393370  2.575201
+1.273117  1.474131  1.814869  2.014907  2.405011  2.602918
+1.229029  1.448502  1.757153  2.050565  2.417160  2.594614
+1.206296  1.515099  1.788958  2.042150  2.368561  2.585804
+1.158903  1.544803  1.861448  2.066653  2.405246  2.590991
+1.203257  1.479859  1.833516  2.070616  2.431802  2.585701
+1.170767  1.555780  1.826674  2.077078  2.467476  2.619408
+1.116279  1.593527  1.824249  2.160817  2.427806  2.600491
+1.250314  1.617299  1.962648  2.152242  2.531239  2.631433
+1.352996  1.645245  2.070194  2.180379  2.612026  2.688774
+1.460334  1.917189  2.086815  2.314592  2.641184  2.723059
+1.557095  1.916613  2.056898  2.263201  2.640329  2.702797
+1.410674  1.903388  2.077833  2.222944  2.615402  2.694117
+1.340491  1.804040  2.040016  2.149565  2.607705  2.678152
+1.090681  1.321064  1.862736  1.983775  2.475855  2.592436
+1.002459  1.265507  1.813017  1.904336  2.499258  2.626541
+1.051386  1.161286  1.832534  1.955080  2.502338  2.624753
+0.942516  1.064243  1.669560  1.977253  2.464181  2.598328
+0.869608  0.984141  1.454614  1.956177  2.507893  2.617868
+0.972489  1.135467  1.529146  1.729979  2.411574  2.571077
+1.051275  1.149410  1.547524  1.827149  2.511333  2.617618
+1.079744  1.191206  1.539363  1.944728  2.545236  2.632156
+1.182063  1.260030  1.596098  2.084659  2.511859  2.579406
+1.172004  1.352761  1.462749  2.015059  2.625356  2.679374
+1.200545  1.322975  1.515601  1.769202  2.523140  2.666825
+1.228092  1.307135  1.734031  1.914746  2.244815  2.562025
+1.176188  1.321661  1.782310  1.882580  2.271364  2.521450
+1.150025  1.486223  1.774146  1.970935  2.385075  2.612636
+1.103163  1.455003  1.720622  1.899593  2.356715  2.591383
+1.070467  1.386313  1.746928  1.891984  2.367512  2.543572
+0.953610  1.176163  1.643545  1.919980  2.372057  2.572461
+1.052319  1.405171  1.688954  1.831668  2.542879  2.632479
+0.996802  1.441427  1.684462  1.821948  2.595992  2.658845
+1.026550  1.334938  1.740944  1.840382  2.571653  2.678967
+1.108319  1.200840  1.706127  1.999085  2.514665  2.648206
+1.133324  1.219468  1.747774  2.013077  2.406643  2.640363
+1.142143  1.218723  1.814638  1.951061  2.430067  2.666180
+1.081563  1.207089  1.846455  1.946284  2.339144  2.612659
+1.146374  1.238625  1.874251  1.968098  2.427377  2.595630
+1.069408  1.393128  1.859759  1.941816  2.374471  2.538181
+1.060221  1.402928  1.784643  1.909954  2.080852  2.375424
+0.893759  1.225333  1.741426  1.895488  2.062213  2.441777
+0.911307  1.301394  1.651487  1.798169  1.996879  2.208655
+1.102905  1.503307  1.707775  1.808533  1.958631  2.311679
+1.149446  1.328058  1.738279  1.904609  2.061868  2.257965
+1.121345  1.230563  1.748776  1.950661  2.086466  2.389286
+0.948970  1.101893  1.676635  1.875393  2.016817  2.296681
+1.035082  1.162231  1.641377  1.952709  2.100948  2.358717
+0.994183  1.114307  1.547601  1.773728  1.966081  2.336299
+1.025110  1.139705  1.585236  1.912371  2.102465  2.482426
+0.955352  1.062216  1.659060  1.848407  2.043281  2.487426
+1.049103  1.120549  1.446982  1.949018  2.026898  2.560590
+1.012432  1.138276  1.367936  2.008468  2.189441  2.422416
+1.082028  1.234911  1.351755  1.827170  2.173158  2.300241
+1.094359  1.235138  1.416416  1.922593  2.128232  2.419413
+1.034512  1.151307  1.492358  1.980846  2.149036  2.365312
+1.013088  1.154539  1.459958  1.943044  2.281758  2.397269
+0.987103  1.274347  1.561873  1.917460  2.334292  2.495651
+0.989791  1.289172  1.623138  1.982329  2.345033  2.548052
+1.042013  1.225970  1.610016  1.974800  2.406311  2.537036
+1.019690  1.323725  1.679076  1.983690  2.443023  2.561932
+1.030978  1.249914  1.753285  1.970302  2.442750  2.577102
+1.078647  1.281367  1.821676  2.046994  2.512487  2.614303
+1.042503  1.318276  1.817538  1.977740  2.538774  2.643473
+1.033751  1.323431  1.885960  1.993635  2.587127  2.648293
+1.084158  1.434121  1.899660  1.974483  2.661669  2.717102
+1.095790  1.481301  1.916550  1.970409  2.671232  2.730973
+1.147960  1.553068  1.884541  1.960664  2.501839  2.667876
+1.137776  1.498910  1.962620  2.047239  2.537310  2.642351
+1.108862  1.435492  1.955490  2.195866  2.514284  2.601530
+1.191071  1.557850  1.984542  2.270790  2.541878  2.642064
+1.110737  1.553081  1.978127  2.211052  2.613375  2.706641
+1.114093  1.728016  1.975042  2.124483  2.602927  2.681942
+1.148485  1.627087  1.968135  2.073898  2.607358  2.686667
+1.109004  1.450655  1.961102  2.058609  2.611646  2.694610
+1.095904  1.318763  1.866640  2.096294  2.574677  2.658840
+1.116558  1.367968  1.922533  2.016505  2.549444  2.646230
+1.129468  1.529113  1.942204  2.003339  2.527872  2.699919
+1.139050  1.679536  1.945866  2.032922  2.537427  2.642172
+1.219207  1.599421  1.929600  2.011091  2.539104  2.705280
+1.233969  1.556201  1.930999  2.084786  2.578580  2.675834
+1.234430  1.653741  2.033213  2.256759  2.637546  2.699663
+1.255288  1.475044  2.022543  2.289234  2.587690  2.703947
+1.253389  1.472198  1.956397  2.211186  2.574243  2.676099
+1.126854  1.587210  1.950824  2.031487  2.416846  2.614459
+1.007062  1.608304  1.896229  1.986335  2.223017  2.524028
+1.067280  1.729449  1.931889  2.045329  2.164850  2.400910
+0.946660  1.699777  1.870624  1.981832  2.135670  2.447688
+1.002686  1.728563  1.939905  2.072520  2.274792  2.467485
+1.148787  1.600550  2.003063  2.128026  2.409105  2.506525
+1.191365  1.359514  1.908437  2.116985  2.369079  2.529393
+1.229740  1.316359  1.901465  2.001169  2.368350  2.575701
+1.167453  1.284078  1.851548  2.056283  2.446292  2.573763
+1.177049  1.282978  1.796076  2.014566  2.409896  2.524428
+1.166550  1.281729  1.804132  1.938592  2.383050  2.543803
+1.144710  1.266197  1.755782  1.865513  2.354119  2.575142
+1.168465  1.283561  1.695054  1.817537  2.302788  2.529561
+1.093474  1.316111  1.625831  1.791050  2.303314  2.408563
+1.072994  1.218877  1.586912  1.725308  2.219203  2.343524
+0.946241  1.172838  1.426290  1.551682  2.192575  2.321727
+1.001802  1.174980  1.507444  1.697862  2.240802  2.478241
+0.992564  1.257780  1.429092  1.819825  2.234153  2.434915
+0.933586  1.255559  1.372464  1.686266  2.265977  2.349467
+0.987914  1.162881  1.404420  1.563483  2.227668  2.485371
+1.058576  1.185833  1.325383  1.445585  2.164512  2.455141
+1.042271  1.149610  1.389036  1.473828  1.906671  2.390132
+0.966952  1.075537  1.288155  1.405105  2.061861  2.451990
+0.901530  1.194476  1.354732  1.705750  2.325032  2.434812
+1.038418  1.292428  1.527305  1.909844  2.230333  2.465135
+1.336010  1.441693  1.849134  2.208029  2.414400  2.532513
+1.436224  1.645653  2.008636  2.198160  2.502278  2.601413
+1.424341  1.684427  1.929812  2.122504  2.512280  2.604860
+1.452203  1.722988  1.962207  2.156659  2.484102  2.584594
+1.481999  1.735238  1.971190  2.222801  2.512305  2.623621
+1.392556  1.721267  1.940304  2.174966  2.488944  2.601854
+1.243347  1.558461  1.809822  1.990890  2.381971  2.537485
+1.199294  1.421504  1.763108  1.990880  2.358918  2.489556
+1.217773  1.348784  1.714665  1.916837  2.379728  2.456961
+1.219523  1.326854  1.719656  1.838075  2.299329  2.435406
+1.263073  1.353656  1.787228  1.918973  2.320389  2.448246
+1.270962  1.373799  1.718185  1.857935  2.366922  2.481748
+1.284351  1.368069  1.793907  1.895081  2.356790  2.524604
+1.244789  1.353657  1.782947  1.928688  2.225716  2.379949
+1.269283  1.368726  1.719184  1.909677  2.267163  2.491540
+1.249305  1.338194  1.799918  1.917097  2.274691  2.533224
+1.179498  1.259046  1.802972  1.927327  2.228930  2.503637
+1.140961  1.245902  1.708660  1.923794  2.243465  2.557345
+1.063955  1.209030  1.737289  1.945349  2.338697  2.573092
+1.003475  1.109161  1.745131  1.902188  2.308443  2.601614
+0.937618  1.077537  1.747804  1.869648  2.205055  2.570449
+0.885099  1.192451  1.790545  1.876157  2.360305  2.598108
+0.803485  0.966415  1.768458  1.928742  2.196723  2.530460
+0.797205  1.120717  1.776585  1.878573  2.370357  2.614341
+0.831514  1.059080  1.808800  1.905483  2.448208  2.573050
+0.806597  0.967446  1.829385  1.963682  2.358632  2.653242
+0.699378  0.851831  1.739446  1.933943  2.516377  2.655249
+0.739203  1.033985  1.902113  2.010327  2.494149  2.629822
+0.945605  1.079706  1.796352  2.039543  2.581863  2.699784
+0.843512  1.304861  1.835452  2.036832  2.600217  2.677826
+0.970152  1.414374  1.854051  1.957787  2.596045  2.665425
+1.067282  1.438542  1.888429  2.067094  2.531016  2.643177
+1.117619  1.563112  1.886324  2.218866  2.530223  2.624080
+1.209656  1.626913  1.943700  2.187427  2.555090  2.658675
+1.338891  1.812879  2.030890  2.305204  2.569275  2.661165
+1.303367  1.840104  2.035985  2.286745  2.614227  2.713359
+1.193428  1.727354  1.926203  2.184400  2.574784  2.631812
+1.063515  1.717188  1.903657  2.119051  2.444811  2.497667
+1.062175  1.188948  1.810480  2.044978  2.322378  2.578780
+1.073201  1.177557  1.654731  2.023264  2.200369  2.442874
+1.027815  1.165415  1.669466  1.859614  2.202142  2.462466
+1.035584  1.148236  1.604900  1.872549  2.257851  2.551682
+1.007205  1.131087  1.579146  1.969788  2.331637  2.507912
+0.908594  1.005601  1.463269  2.072372  2.304356  2.407363
+0.981614  1.126428  1.280565  1.886853  2.101922  2.487836
+1.006764  1.132557  1.253088  1.718315  2.189249  2.436605
+0.899830  1.156538  1.260748  1.696712  2.116655  2.228297
+0.896996  1.246551  1.436874  1.645194  2.073642  2.149130
+0.965481  1.069671  1.446489  1.949492  2.091582  2.298331
+0.898113  1.058765  1.617556  1.941551  2.113568  2.374743
+0.769481  1.159379  1.597415  1.959851  2.283842  2.418197
+0.908091  1.305340  1.473570  1.862549  2.164147  2.331091
+0.924282  1.334689  1.563201  2.043541  2.406015  2.515756
+0.972939  1.381971  1.549985  2.021238  2.268488  2.419332
+1.032229  1.484031  1.620031  1.952234  2.267322  2.486440
+1.005234  1.354692  1.620203  1.777917  2.223067  2.497574
+1.072742  1.245035  1.661666  1.819389  2.260496  2.468700
+1.134470  1.250480  1.737034  1.868971  2.303204  2.466426
+1.145935  1.293264  1.728505  1.950979  2.350982  2.504021
+1.226356  1.329795  1.750777  1.982144  2.347843  2.553027
+1.234801  1.328107  1.696728  2.060564  2.437310  2.535600
+1.247128  1.360496  1.742955  1.961348  2.474080  2.668447
+1.234736  1.329837  1.688634  1.913331  2.442940  2.627695
+1.230430  1.326635  1.697588  1.806044  2.381473  2.618535
+1.188567  1.273079  1.708983  1.969001  2.340683  2.588959
+1.204284  1.331218  1.835523  2.141256  2.463226  2.583492
+1.202374  1.397220  1.863749  2.155165  2.599733  2.681191
+1.217581  1.333297  1.763898  1.994983  2.601835  2.684817
+1.272368  1.364451  1.776352  1.952098  2.563424  2.676170
+1.330173  1.434654  1.825090  1.938032  2.579405  2.666102
+1.383550  1.514770  1.774712  2.134998  2.528583  2.614711
+1.488234  1.631245  1.795942  2.180588  2.497787  2.585930
+1.497854  1.598429  1.760395  1.985719  2.538066  2.622220
+1.446514  1.555686  1.675484  1.899620  2.547070  2.637129
+1.420188  1.651758  1.888119  2.201558  2.498716  2.624372
+1.524851  1.748918  1.939479  2.132594  2.426619  2.604303
+1.588214  1.786968  1.965710  2.123251  2.417433  2.579888
+1.603052  1.805249  1.932723  2.088062  2.490882  2.628467
+1.521714  1.853040  1.968163  2.198421  2.530921  2.597229
+1.496309  1.785807  2.001979  2.206169  2.574155  2.645280
+1.405201  1.500557  1.908673  2.179223  2.543732  2.645774
+1.369555  1.501308  1.848796  2.089859  2.551118  2.643621
+1.395377  1.488644  1.872404  2.028116  2.530256  2.599192
+1.354582  1.508972  1.848875  1.976677  2.504926  2.579355
+1.325752  1.411326  1.837129  1.970792  2.502717  2.584831
+1.264497  1.390436  1.764758  2.087338  2.519279  2.625037
+1.280904  1.355652  1.790288  1.995707  2.502567  2.587359
+1.267443  1.360843  1.858033  2.035632  2.509375  2.584870
+1.238902  1.487541  1.786660  2.080354  2.480913  2.582137
+1.228708  1.441140  1.715963  1.893335  2.507070  2.565131
+1.167347  1.397307  1.672051  1.923535  2.438392  2.523520
+1.169232  1.356809  1.567433  1.950379  2.378945  2.468006
+1.240244  1.470896  1.629735  2.024684  2.376716  2.454875
+1.370859  1.665288  1.831505  2.176433  2.486403  2.586565
+1.513368  1.657039  1.965014  2.298013  2.532148  2.623007
+1.446940  1.612676  1.929087  2.232303  2.466210  2.565149
+1.430659  1.664527  1.882163  2.234579  2.421664  2.527294
+1.511551  1.658934  1.944043  2.198499  2.451946  2.588348
+1.539441  1.741360  2.111062  2.229922  2.438935  2.615056
+1.510948  1.846893  2.061790  2.202452  2.484110  2.572628
+1.366393  1.611652  2.079365  2.260070  2.467062  2.588032
+1.383579  1.641339  1.997349  2.226153  2.491435  2.611630
+1.381458  1.706898  1.963061  2.125553  2.596797  2.681115
+1.360033  1.558255  1.949661  2.054826  2.599573  2.714554
+1.379339  1.491775  1.925897  2.046337  2.539371  2.696047
+1.313275  1.469403  1.863111  2.141749  2.553959  2.668104
+1.201520  1.563000  1.925029  2.093014  2.476606  2.614413
+0.965563  1.662126  1.836100  2.071866  2.530046  2.578446
+0.976435  1.635119  1.844726  2.005117  2.553083  2.614153
+1.098159  1.549476  1.826426  1.907908  2.490671  2.625630
+0.971599  1.431927  1.818186  1.923193  2.493841  2.568117
+0.881008  1.272866  1.901429  1.959221  2.513674  2.596017
+0.915929  1.478770  1.955701  2.082549  2.494350  2.585776
+1.008177  1.579393  1.898198  2.139172  2.477629  2.551209
+0.937399  1.507567  1.803910  1.922590  2.546047  2.637297
+0.848413  1.358228  1.783925  1.906229  2.477012  2.588525
+0.863404  1.488629  1.835502  1.930032  2.465498  2.545317
+0.844376  1.622282  1.826798  2.048364  2.490552  2.545809
+0.869731  1.705034  1.854703  2.111605  2.517014  2.593453
+0.862235  1.623015  1.899372  2.028710  2.527844  2.574800
+0.931658  1.576339  1.853614  1.975118  2.542237  2.614786
+0.848799  1.588406  1.847097  1.955899  2.534073  2.584561
+0.737814  1.457219  1.829993  1.966203  2.501271  2.579455
+0.786199  1.100080  1.860369  1.964282  2.419364  2.566134
+0.728962  1.040841  1.773818  1.963733  2.356948  2.578866
+0.733093  1.147783  1.789774  1.909293  2.349819  2.481103
+0.785959  1.280236  1.730487  1.926696  2.346913  2.422480
+0.784924  1.446821  1.669690  1.935370  2.368317  2.459601
+0.758523  1.466915  1.805902  1.946588  2.352213  2.426335
+0.767907  1.544295  1.768171  2.003937  2.239037  2.386192
+0.896374  1.562074  1.716926  1.903301  2.308243  2.430582
+0.834530  1.504812  1.737424  1.917731  2.409279  2.493291
+0.896027  1.406949  1.730026  1.903326  2.431247  2.539722
+1.039666  1.364116  1.806278  1.948174  2.440690  2.557972
+1.093454  1.412357  1.833723  1.940104  2.489654  2.564450
+1.190180  1.386167  1.848700  1.956202  2.481553  2.580885
+1.243158  1.350416  1.811797  1.893593  2.467576  2.613520
+1.221986  1.308711  1.815913  1.911989  2.417533  2.600995
+1.228372  1.343619  1.763163  1.872602  2.394885  2.582719
+1.278387  1.389710  1.738500  1.870267  2.420854  2.532852
+1.211636  1.401793  1.710146  1.811019  2.363826  2.482240
+1.161497  1.400684  1.766674  1.891745  2.392605  2.495922
+1.114937  1.405487  1.718336  1.927418  2.356818  2.468335
+1.074680  1.452959  1.668715  1.898094  2.336526  2.443457
+1.006705  1.356254  1.629477  1.848470  2.313894  2.426320
+0.966452  1.457923  1.654693  1.906386  2.320056  2.418339
+0.939007  1.519988  1.667014  1.989416  2.390669  2.488951
+0.946840  1.483985  1.701087  2.105572  2.391444  2.490066
+0.909129  1.501060  1.665371  2.004939  2.256700  2.389841
+0.958919  1.390613  1.680082  2.107156  2.297251  2.440839
+1.462160  1.588562  1.808539  2.109890  2.264826  2.417467
+1.301642  1.673806  1.892518  2.168109  2.477558  2.561621
+1.152769  1.529326  1.783781  2.014354  2.446614  2.560929
+1.128698  1.493018  1.748156  1.930275  2.530674  2.621591
+1.164356  1.496855  1.767664  1.871136  2.607250  2.684794
+1.122714  1.380513  1.762236  1.875604  2.441522  2.732814
+1.173906  1.545927  1.843801  1.933791  2.123448  2.629011
+1.155439  1.465806  1.793876  1.928550  2.168553  2.609610
+1.147812  1.484543  1.816424  1.908762  2.262620  2.704081
+1.185870  1.393524  1.811853  1.881115  2.544291  2.735905
+1.153304  1.451135  1.855404  1.888619  2.603314  2.738077
+1.208854  1.582363  1.784858  1.880089  2.596481  2.727884
+1.194841  1.542896  1.919056  2.023145  2.551891  2.634186
+1.230327  1.492063  1.937225  2.133605  2.615726  2.690226
+1.258764  1.581307  1.980070  2.138762  2.599037  2.691033
+1.220691  1.572961  1.917212  2.177536  2.599585  2.702012
+1.258143  1.556630  1.871736  2.132633  2.585514  2.673307
+1.233770  1.598238  1.849957  2.013674  2.542859  2.634481
+1.269759  1.560794  1.865225  2.076328  2.521082  2.617443
+1.116561  1.680882  1.781694  1.920497  2.592211  2.675845
+1.048209  1.662996  1.817400  1.915170  2.484585  2.623077
+0.954241  1.619674  1.813457  1.881694  2.550667  2.631971
+0.964363  1.579747  1.728712  1.862126  2.567566  2.636332
+1.296922  1.646884  1.889259  2.069271  2.320227  2.481389
+1.232775  1.619596  1.955470  2.066559  2.335277  2.456514
+1.238971  1.351788  1.877566  2.166413  2.317967  2.474389
+1.180292  1.388353  1.607451  1.950835  2.210855  2.477718
+1.124001  1.423538  1.617323  1.826801  2.206068  2.444078
+1.147794  1.487048  1.627974  1.926015  2.278418  2.486526
+1.092654  1.499725  1.623041  1.880156  2.411660  2.648649
+1.115294  1.468690  1.607626  1.814459  2.356904  2.576088
+1.176045  1.424631  1.614229  1.966337  2.352676  2.570354
+1.211051  1.467429  1.617777  1.851487  2.389770  2.591860
+1.287681  1.464858  1.633790  1.856231  2.349748  2.565320
+1.298585  1.495223  1.639003  1.942642  2.415390  2.518116
+1.309890  1.431142  1.757192  1.977209  2.414871  2.520878
+1.392241  1.477414  1.811303  1.909687  2.440417  2.573891
+1.414942  1.515382  1.858997  2.127937  2.490674  2.635418
+1.490435  1.565967  1.952412  2.049065  2.499936  2.600180
+1.485068  1.734116  1.997368  2.089376  2.524766  2.608159
+1.507131  1.787198  2.048100  2.128356  2.533629  2.624653
+1.485217  1.772591  2.048100  2.144373  2.595743  2.679785
+1.560042  1.744521  2.076144  2.156837  2.615057  2.698771
+1.506276  1.855445  2.064190  2.144534  2.585665  2.687788
+1.592877  1.903451  2.084530  2.163395  2.496904  2.633589
+1.609454  1.870860  2.119821  2.186594  2.599505  2.697819
+1.594779  1.855348  2.025620  2.142545  2.572299  2.637841
+1.527194  1.714086  2.076267  2.185169  2.526549  2.631137
+1.518012  1.628010  2.039263  2.134528  2.453843  2.576361
+1.531312  1.678082  2.035179  2.146889  2.504859  2.584171
+1.508627  1.632606  1.965140  2.148678  2.496640  2.592746
+1.499896  1.599423  1.913687  2.036860  2.450192  2.538166
+1.481158  1.583812  1.884461  2.013870  2.359497  2.481100
+1.475736  1.569698  1.799993  1.916182  2.329218  2.535901
+1.498641  1.623604  1.792824  1.945217  2.358627  2.490727
+1.431128  1.574627  1.743263  2.006116  2.347765  2.508896
+1.427064  1.536583  1.790690  1.943028  2.344465  2.452652
+1.436838  1.542023  1.758917  1.925622  2.242913  2.416844
+1.419788  1.509038  1.863320  1.995399  2.275792  2.424732
+1.424396  1.510477  1.882887  2.179017  2.304708  2.455667
+1.366051  1.461194  1.935323  2.147551  2.263420  2.465785
+1.407395  1.564972  1.981125  2.103440  2.445291  2.565104
+1.597013  1.877015  2.068503  2.270312  2.499356  2.604888
+1.484981  1.818125  2.149815  2.337593  2.504753  2.589439
+1.487878  1.937181  2.118271  2.308368  2.511781  2.604626
+1.682297  1.977033  2.192290  2.373676  2.522931  2.611282
+1.749459  1.905682  2.218271  2.352013  2.574227  2.681484
+1.676221  1.936512  2.237179  2.343782  2.535908  2.661271
+1.723362  1.989915  2.271236  2.413144  2.550828  2.649366
+1.756006  1.996913  2.312656  2.461484  2.625420  2.708736
+1.499770  1.763295  2.158871  2.346879  2.592716  2.682851
+1.747521  1.927133  2.248936  2.410841  2.604121  2.690881
+1.670354  1.938258  2.247669  2.447135  2.657540  2.730040
+1.669237  1.959610  2.179318  2.440527  2.588429  2.640800
+1.780231  2.015138  2.164810  2.399021  2.581913  2.646942
+1.739561  1.967219  2.065694  2.364479  2.589977  2.649441
+1.605008  1.875105  2.018901  2.227404  2.541181  2.603541
+1.511246  1.892601  2.027827  2.148110  2.520001  2.608199
+1.363362  1.568768  1.910845  2.057695  2.463506  2.558819
+1.338497  1.483825  1.883695  2.067074  2.448950  2.577904
+1.369193  1.437863  1.845222  2.078464  2.428504  2.615891
+1.377698  1.498294  1.867666  2.164965  2.492547  2.570908
+1.408098  1.487760  1.872414  2.097948  2.447272  2.551716
+1.402363  1.531952  1.897693  2.126667  2.419162  2.551442
+1.456496  1.554631  1.841067  2.095807  2.421290  2.561761
+1.434931  1.529146  1.795336  2.163704  2.446465  2.530309
+1.391108  1.495499  1.869679  2.161228  2.381406  2.532017
+1.388934  1.534466  1.797003  2.102941  2.398508  2.521270
+1.358571  1.471303  1.760049  2.100883  2.350197  2.546548
+1.276599  1.519215  1.779419  2.095819  2.442938  2.665941
+1.206661  1.457865  1.760464  2.244280  2.495881  2.644848
+1.214611  1.460274  1.979019  2.239454  2.398324  2.634473
+1.275473  1.473470  1.878570  2.203117  2.475028  2.687851
+1.291712  1.399288  1.813807  2.194118  2.502758  2.614888
+1.260058  1.397998  1.924890  2.186721  2.511667  2.644548
+1.210634  1.326713  1.897594  2.107441  2.460079  2.711722
+1.202657  1.319235  1.892634  2.079859  2.379418  2.679891
+0.967019  1.105970  1.761322  2.107426  2.328428  2.593155
+0.947746  1.035797  1.393730  2.061233  2.300744  2.668280
+0.996167  1.215029  1.378995  1.861982  2.329665  2.605022
+1.008823  1.198481  1.313837  1.693525  2.360746  2.604824
+1.054057  1.218510  1.368106  1.738006  2.174906  2.546071
+1.021568  1.133991  1.369174  1.935639  2.267798  2.544415
+1.033742  1.227769  1.451289  2.005917  2.412620  2.595031
+1.065155  1.168636  1.530185  2.061499  2.410743  2.485478
+1.121227  1.281283  1.432233  1.909928  2.202734  2.509308
+1.170032  1.306041  1.494945  1.981910  2.202815  2.351735
+1.152630  1.266186  1.620999  2.057673  2.214453  2.381642
+1.228128  1.313272  1.751468  2.118469  2.263417  2.453888
+1.307832  1.398650  1.799753  2.125735  2.260615  2.451800
+1.360104  1.477444  1.835740  2.121870  2.291563  2.499791
+1.398477  1.492966  1.806519  2.107140  2.241410  2.434146
+1.351212  1.462506  1.726393  2.122387  2.285789  2.421844
+1.297203  1.498868  1.766246  2.157839  2.376714  2.497158
+1.377349  1.518971  1.803789  2.191150  2.356374  2.478897
+1.289165  1.553241  1.674591  2.112634  2.403345  2.473877
+1.188972  1.700336  1.834324  2.055585  2.599531  2.700414
+1.077038  1.667666  1.902189  2.045693  2.602910  2.700056
+1.072057  1.272462  1.843743  1.901183  2.586254  2.720558
+1.084385  1.392072  1.823558  1.901299  2.589426  2.680029
+1.106319  1.441363  1.766145  1.853724  2.549356  2.627414
+1.094566  1.550024  1.771922  1.870952  2.559682  2.628051
+1.041899  1.598552  1.813702  1.928485  2.545630  2.671501
+1.090204  1.610510  1.812559  2.019257  2.556321  2.608793
+1.016528  1.626657  1.742411  2.041925  2.541538  2.602247
+1.075570  1.647752  1.870667  2.073970  2.574597  2.628798
+1.126656  1.586213  1.792572  1.982408  2.629180  2.725561
+1.027776  1.542665  1.831396  1.956878  2.603010  2.668523
+1.111897  1.543416  1.861469  1.942917  2.621957  2.672864
+1.080512  1.583194  1.857304  1.958456  2.633597  2.695142
+1.132239  1.449156  1.884949  1.977000  2.607850  2.709420
+1.232769  1.612605  1.960435  2.071693  2.644678  2.727118
+1.325014  1.779901  1.967304  2.113871  2.547837  2.668723
+1.404585  1.644448  2.058088  2.257112  2.519116  2.634613
+1.413485  1.609401  2.002521  2.184102  2.587532  2.696153
+1.354020  1.593877  2.014439  2.122204  2.617254  2.721812
+1.373822  1.656758  1.992185  2.189875  2.548725  2.702514
+1.421181  1.611084  1.958071  2.123616  2.569835  2.648136
+1.379179  1.620195  1.922636  2.093948  2.550690  2.641857
+1.367726  1.656675  1.838447  1.992123  2.596226  2.654039
+1.394553  1.750623  1.872269  2.038430  2.553215  2.623595
+1.464021  1.741591  1.912988  2.150261  2.565594  2.648823
+1.461132  1.809059  1.954612  2.209898  2.570276  2.642519
+1.434520  1.770834  1.904022  2.217315  2.631183  2.686995
+1.375527  1.631662  1.885996  2.086587  2.600503  2.671257
+1.339213  1.568724  1.817375  2.085568  2.591336  2.666455
+1.504403  1.779590  2.057141  2.272445  2.534600  2.634655
+1.474504  1.746318  2.044711  2.137376  2.474545  2.630529
+1.557045  1.755017  2.039661  2.080935  2.661339  2.741743
+1.573452  1.715361  2.056726  2.098368  2.691640  2.743685
+1.511431  1.831887  1.991585  2.156042  2.624346  2.709519
+1.501907  1.714027  2.012931  2.079434  2.554662  2.690409
+1.547183  1.671908  1.977966  2.104057  2.507158  2.614807
+1.563264  1.635971  1.990128  2.123718  2.563823  2.633190
+1.587772  1.697791  2.007538  2.127360  2.588839  2.656541
+1.618303  1.722230  2.008488  2.131284  2.618167  2.687641
+1.580078  1.684932  2.000646  2.087829  2.613984  2.687671
+1.572775  1.736323  1.961536  2.144351  2.641248  2.687943
+1.538985  1.652845  1.952108  2.156038  2.639302  2.685734
+1.537130  1.622797  1.963527  2.075940  2.612204  2.679327
+1.537449  1.633250  1.986524  2.075675  2.542791  2.643796
+1.543228  1.772021  2.053914  2.142473  2.536411  2.690489
+1.621800  1.829997  2.052741  2.210858  2.583215  2.665837
+1.609565  1.935324  2.146682  2.393315  2.597212  2.670556
+1.560818  1.935543  2.191435  2.444376  2.609921  2.692602
+1.704277  1.874585  2.010256  2.380095  2.528658  2.604802
+1.624784  1.837785  1.925361  2.193011  2.497168  2.569432
+1.556125  1.832653  1.986935  2.189317  2.453204  2.531630
+1.347428  1.669666  1.943932  2.108052  2.506631  2.608423
+1.278409  1.497251  1.838413  2.073920  2.454553  2.592324
+1.271049  1.415120  1.758107  2.232460  2.422770  2.554672
+1.260337  1.356714  1.913167  2.225895  2.380602  2.557250
+1.223099  1.307974  1.784088  2.207517  2.362875  2.487786
+1.249454  1.538164  1.716600  1.998319  2.362110  2.465531
+1.208014  1.503064  1.761303  1.917077  2.448048  2.525133
+1.151848  1.461146  1.783945  1.946886  2.452561  2.556307
+1.165555  1.347773  1.799946  1.920752  2.437876  2.546954
+1.109788  1.310449  1.815889  1.923381  2.427304  2.602804
+1.091990  1.233639  1.789609  1.925036  2.467804  2.611170
+1.052323  1.194748  1.809895  1.914231  2.390180  2.556318
+1.032267  1.189488  1.775623  1.889690  2.393248  2.640830
+0.992854  1.169627  1.814159  1.912252  2.320268  2.634324
+1.054415  1.177746  1.762755  1.907196  2.266178  2.516301
+1.029545  1.167365  1.780060  1.973540  2.227843  2.613887
+1.067777  1.184807  1.741322  1.919129  2.121959  2.500789
+1.167843  1.263051  1.778629  1.900717  2.150811  2.568660
+1.247027  1.323672  1.811046  1.934590  2.184022  2.674617
+1.331781  1.426137  1.785144  1.966030  2.114558  2.541825
+1.360900  1.444142  1.862535  1.949748  2.426744  2.646105
+1.408538  1.451788  1.866918  2.014230  2.478842  2.705911
+1.405554  1.483551  1.874980  1.960293  2.502764  2.662540
+1.442367  1.544656  1.883354  1.987590  2.562980  2.647761
+1.480719  1.536202  1.881818  2.018874  2.582349  2.661791
+1.513078  1.583246  1.895764  1.987154  2.586166  2.676009
+1.497760  1.602088  1.831006  1.985404  2.564090  2.643635
+1.497065  1.564915  1.844643  1.957697  2.539930  2.677163
+1.468106  1.523747  1.865842  1.940079  2.607970  2.684862
+1.468104  1.564389  1.858916  1.982405  2.606481  2.709686
+1.422735  1.519196  1.806791  1.891590  2.614823  2.703893
+1.396871  1.476698  1.776404  2.013253  2.607847  2.665988
+1.391532  1.504565  1.830535  2.081544  2.611020  2.720808
+1.372885  1.645062  1.833360  2.015761  2.631341  2.701342
+1.331289  1.747404  1.897953  2.146510  2.586685  2.658273
+1.503178  1.734690  1.914996  2.282089  2.598389  2.679187
+1.465242  1.711762  2.025166  2.284078  2.653659  2.717393
+1.423402  1.768761  2.084406  2.277880  2.636443  2.711524
+1.423821  1.724472  2.032594  2.300309  2.603340  2.686111
+1.433184  1.818868  2.053883  2.409241  2.628605  2.699461
+1.509846  1.793493  2.052637  2.357768  2.644126  2.718058
+1.575730  1.851530  2.032958  2.374899  2.583530  2.662235
+1.501264  1.780829  1.998554  2.329265  2.505605  2.606743
+1.460060  1.763209  1.912334  2.214416  2.494328  2.577616
+1.444041  1.657674  1.895357  2.148549  2.478458  2.595455
+1.454287  1.619858  1.935887  2.189754  2.478831  2.594880
+1.377243  1.642180  1.919668  2.142842  2.421514  2.541038
+1.051059  1.421021  1.830399  2.021216  2.373690  2.548829
+0.964571  1.071641  1.394899  2.151202  2.371776  2.464951
+0.966306  1.181025  1.302213  2.014819  2.375093  2.435135
+0.895560  1.207845  1.335308  1.823923  2.239924  2.363100
+1.006776  1.203093  1.317821  1.873977  2.336638  2.408782
+1.054129  1.225595  1.379006  2.024687  2.333311  2.421550
+1.090202  1.224770  1.409674  2.013195  2.245364  2.353229
+1.076475  1.203972  1.563890  2.033954  2.203362  2.369101
+1.127967  1.249133  1.664693  2.080426  2.256625  2.469541
+1.202013  1.429684  1.793680  2.080715  2.339984  2.460053
+1.517223  1.673904  1.927925  2.203642  2.386760  2.520143
+1.586618  1.786240  2.041674  2.198999  2.416371  2.581194
+1.593300  1.808548  2.148779  2.250278  2.372090  2.532412
+1.657294  1.783458  2.150393  2.258130  2.453915  2.616209
+1.571489  1.792659  2.117652  2.350385  2.577192  2.666949
+1.301994  1.729750  1.974424  2.093250  2.593899  2.663024
+1.100218  1.563399  1.919910  2.059220  2.562974  2.637757
+1.025074  1.540738  1.811898  2.057911  2.491877  2.603248
+1.015309  1.473504  1.802588  2.013084  2.436758  2.605319
+1.022065  1.158479  1.689786  2.183529  2.383778  2.492374
+1.212476  1.453108  1.823947  2.061442  2.396186  2.536578
+1.126243  1.452934  1.809587  2.071074  2.408943  2.549557
+0.880332  1.324785  1.621337  1.967251  2.313156  2.426927
+0.749583  1.358409  1.575073  1.870590  2.279227  2.377431
+0.901917  1.290215  1.674425  1.954410  2.233361  2.391524
+0.850971  1.252102  1.657646  1.816460  2.183885  2.328806
+0.881480  1.284101  1.698159  1.844661  2.341820  2.440909
+0.874499  1.182682  1.709489  1.917452  2.365966  2.499649
+0.833751  1.231132  1.803319  1.918020  2.459092  2.546881
+0.850970  1.127086  1.772073  1.855222  2.487580  2.582865
+0.881650  1.114802  1.820703  1.959079  2.521753  2.598731
+0.803558  1.150285  1.798477  1.952675  2.538917  2.634898
+0.867833  0.990496  1.832275  1.929767  2.547660  2.681084
+0.865057  1.067437  1.773263  1.860188  2.558331  2.702216
+0.832529  0.985960  1.756367  1.862925  2.438281  2.623782
+0.850804  1.060553  1.892217  1.984007  2.483774  2.661123
+0.873803  1.041984  1.746198  1.932438  2.338221  2.554585
+0.958594  1.103471  1.836438  1.936783  2.393758  2.573200
+1.014831  1.140873  1.825933  2.013713  2.401490  2.609423
+1.075369  1.457644  1.900463  2.033493  2.314190  2.490949
+1.201715  1.736170  1.914076  2.066503  2.386907  2.476963
+1.215217  1.873613  2.065903  2.182990  2.374981  2.489555
+1.620207  1.851261  2.111542  2.342798  2.527494  2.633887
+1.683879  1.860372  2.126009  2.404344  2.562983  2.636158
+1.703817  1.934383  2.133673  2.393214  2.601932  2.682469
+1.526877  1.900128  2.151100  2.361638  2.575171  2.658979
+1.587253  1.881390  2.129945  2.267860  2.577863  2.657840
+1.539163  1.871344  2.190283  2.360385  2.624615  2.705636
+1.625747  1.862181  2.120094  2.339463  2.592159  2.682142
+1.679527  1.920689  2.161166  2.317106  2.648896  2.712106
+1.635199  1.922826  2.174839  2.407399  2.630046  2.709271
+1.454186  1.975699  2.151850  2.371342  2.609179  2.685790
+1.672439  2.011404  2.183017  2.463917  2.652956  2.711525
+1.612105  1.987481  2.102582  2.293346  2.616125  2.670264
+1.528075  1.895073  2.053582  2.232503  2.544912  2.624122
+1.420355  1.683500  1.963431  2.159418  2.536725  2.620131
+1.456320  1.693132  1.969234  2.164744  2.587162  2.677588
+1.481106  1.637541  1.992642  2.178479  2.548138  2.632755
+1.488517  1.591174  2.016501  2.123324  2.528663  2.614918
+1.477429  1.651519  1.962894  2.102183  2.543300  2.618840
+1.473856  1.622302  1.992230  2.080352  2.572688  2.644430
+1.478216  1.633404  1.931202  2.064133  2.552282  2.629338
+1.452477  1.676763  1.945911  2.084750  2.600973  2.668889
+1.411560  1.706182  1.890249  2.169616  2.567319  2.650155
+1.383398  1.664625  1.803260  2.108612  2.595771  2.646221
+1.434597  1.645007  1.871751  2.115488  2.528958  2.660256
+1.444542  1.581834  1.898636  2.094074  2.528453  2.631504
+1.465558  1.562000  1.841423  2.051601  2.559944  2.632318
+1.499287  1.581053  1.857454  2.098994  2.511597  2.604341
+1.528680  1.651347  1.871308  2.071232  2.562548  2.622460
+1.514467  1.633477  1.778604  2.123502  2.606102  2.662390
+1.301476  1.683914  1.796063  2.170750  2.644952  2.691777
+1.154424  1.626935  1.749221  1.996410  2.579238  2.652899
+1.117912  1.569269  1.795380  1.885300  2.376717  2.739725
+1.251786  1.625672  1.839263  1.991314  2.350120  2.655047
+1.412131  1.694235  1.839362  1.998399  2.445222  2.739684
+1.370157  1.687258  1.879731  2.006454  2.329014  2.632962
+1.174780  1.729049  1.887372  2.013905  2.259388  2.557737
+1.317917  1.737041  1.878083  1.979313  2.175363  2.634863
+1.140130  1.586450  1.932219  2.027711  2.236840  2.484950
+1.100136  1.600099  1.851286  1.972375  2.604826  2.649449
+1.111969  1.525982  1.842706  2.011491  2.601600  2.669393
+1.080825  1.492576  1.810233  1.965312  2.556725  2.645171
+1.129345  1.635898  1.785176  2.137400  2.498003  2.572522
+1.003594  1.603010  1.722697  2.139397  2.431587  2.510996
+1.120169  1.425151  1.675683  2.050774  2.343247  2.460676
+1.328607  1.599151  1.873581  2.170450  2.470538  2.613529
+1.382087  1.595341  1.923462  2.082111  2.349552  2.510754
+1.466192  1.572864  1.870467  2.179996  2.346338  2.471868
+1.379765  1.633014  1.808273  2.166294  2.398723  2.492469
+1.305921  1.610021  1.856406  2.001543  2.390671  2.533908
+1.383086  1.586806  1.757224  1.934804  2.433540  2.587951
+1.307509  1.450943  1.675332  2.033940  2.244229  2.418123
+1.191501  1.484072  1.750272  2.096644  2.249380  2.504983
+1.241378  1.491790  1.776884  2.071735  2.367933  2.508071
+1.265701  1.459923  1.781754  2.009900  2.348578  2.516037
+1.279508  1.414652  1.795096  2.055938  2.395700  2.530542
+1.337338  1.445932  1.853009  2.075183  2.385984  2.535489
+1.288973  1.424709  1.797989  2.026295  2.299802  2.423713
+1.365284  1.471788  1.801705  1.937695  2.345304  2.466696
+1.353791  1.447746  1.736211  1.868886  2.274358  2.475584
+1.360863  1.449607  1.680466  1.802646  2.395536  2.513256
+1.388330  1.526246  1.673331  1.909867  2.385020  2.535430
+1.424428  1.544219  1.720205  1.936245  2.307968  2.491418
+1.448943  1.552009  1.797935  1.937520  2.406873  2.546121
+1.432034  1.521621  1.799322  2.021435  2.477329  2.571754
+1.463087  1.546282  1.834418  2.063488  2.489800  2.595267
+1.425467  1.556435  1.904716  2.110821  2.466374  2.587563
+1.384837  1.569415  1.925581  2.072374  2.561291  2.640537
+1.418492  1.539421  1.937535  2.014318  2.609201  2.676764
+1.397006  1.483285  1.936731  1.977746  2.595606  2.735850
+1.335615  1.441868  1.884738  1.994960  2.589628  2.695748
+1.357490  1.518997  1.871603  1.980199  2.629016  2.700305
+1.353558  1.524318  1.891083  1.963707  2.595814  2.679332
+1.295102  1.639282  1.907387  2.103139  2.583356  2.679778
+1.455545  1.667590  1.953202  2.240488  2.570672  2.673617
+1.460281  1.786653  1.997747  2.285131  2.582928  2.677618
+1.543121  1.729391  2.155674  2.280274  2.655577  2.744248
+1.434440  1.748782  2.042199  2.201295  2.606501  2.695862
+1.436079  1.747337  2.067838  2.253257  2.575944  2.679075
+1.470866  1.698245  2.083133  2.257574  2.565342  2.666191
+1.417419  1.693439  2.053193  2.243538  2.544836  2.632800
+1.412107  1.681588  2.081799  2.326098  2.472446  2.570581
+1.397226  1.764739  2.031556  2.297123  2.471645  2.575881
+1.466497  1.694305  2.005924  2.206325  2.534515  2.635757
+1.437113  1.746568  1.923838  2.127846  2.356631  2.464479
+1.324023  1.597918  1.757776  2.124352  2.347986  2.440470
+1.375387  1.626387  1.778068  2.068399  2.258938  2.397532
+1.379576  1.621789  1.857961  1.994277  2.306086  2.477213
+1.416412  1.648893  1.869117  2.098359  2.345397  2.475125
+1.426241  1.639197  1.925396  2.072677  2.448945  2.532546
+1.459052  1.615870  1.911170  2.125459  2.483704  2.592087
+1.459433  1.690704  1.852418  2.136068  2.529395  2.597199
+1.485144  1.578047  1.810569  2.150621  2.559043  2.618237
+1.529055  1.594664  1.738903  2.261216  2.595771  2.651620
+1.532488  1.585333  1.820935  2.229621  2.623157  2.658477
+1.374401  1.528078  1.848019  2.042459  2.458230  2.591088
+1.399870  1.597467  1.853082  2.096076  2.431604  2.556847
+1.457434  1.609510  1.930756  2.186100  2.392287  2.525064
+1.440508  1.607587  1.869980  2.158283  2.424280  2.555526
+1.376758  1.474791  1.750562  2.190623  2.406180  2.547123
+1.327713  1.454236  1.644635  2.110356  2.352447  2.455926
+1.302805  1.418954  1.609785  2.093121  2.263489  2.393252
+1.207712  1.379869  1.536412  2.059932  2.317302  2.455399
+1.154213  1.302966  1.499207  2.070378  2.322203  2.630828
+1.111474  1.224424  1.625635  2.176079  2.342546  2.606190
+0.945723  1.083298  1.625408  2.214532  2.389898  2.510077
+0.992344  1.116986  1.451917  2.008420  2.313589  2.437855
+1.117309  1.392988  1.713458  2.132315  2.276818  2.497613
+1.332868  1.580932  1.895512  2.129003  2.425104  2.576946
+1.322037  1.497740  1.819219  2.128645  2.443614  2.567952
+1.361937  1.547377  1.790968  2.062941  2.465318  2.546093
+1.252677  1.483878  1.758631  2.033450  2.416283  2.539220
+1.099384  1.344747  1.686531  2.016752  2.355863  2.530839
+1.126109  1.263617  1.649938  1.991544  2.309088  2.514895
+1.190621  1.289655  1.692709  2.009481  2.160091  2.417069
+1.174976  1.414314  1.797856  1.987597  2.278818  2.492762
+1.205354  1.482053  1.850760  2.025549  2.342281  2.523425
+1.248034  1.561185  1.852759  2.096445  2.428364  2.551865
+1.260728  1.601832  1.901052  2.131984  2.409850  2.565546
+1.265037  1.693841  2.000531  2.200039  2.503508  2.617708
+1.278843  1.738264  2.062020  2.289983  2.604440  2.678111
+1.339428  1.735918  2.050123  2.352408  2.597394  2.688219
+1.301064  1.708745  1.965976  2.286214  2.546707  2.653175
+1.278604  1.746157  1.950065  2.214767  2.605793  2.687616
+1.183771  1.523062  1.879119  2.004908  2.600314  2.690485
+1.186222  1.342133  1.817831  1.940077  2.504905  2.659254
+1.179389  1.243680  1.894260  1.979753  2.558019  2.721819
+1.175622  1.357037  1.853192  1.940810  2.646805  2.705660
+1.211124  1.369645  1.825254  1.913289  2.634717  2.712259
+1.169472  1.345149  1.764944  1.883669  2.591077  2.714522
+1.222090  1.389480  1.800177  1.935903  2.573766  2.702922
+1.287266  1.375911  1.878738  1.986045  2.625999  2.708468
+1.299711  1.389598  1.873905  1.942723  2.533485  2.691472
+1.271356  1.424203  1.849847  1.953565  2.555561  2.652372
+1.253571  1.448512  1.829531  1.919100  2.487837  2.630761
+1.223923  1.323017  1.841258  1.932730  2.226845  2.570717
+1.226170  1.321389  1.771794  1.948065  2.137880  2.563052
+1.316238  1.399466  1.789328  1.965570  2.132039  2.424710
+1.264391  1.363953  1.735531  2.005600  2.155844  2.418921
+1.214027  1.319779  1.662017  1.902948  2.064631  2.424833
+1.242602  1.342314  1.624757  1.929420  2.083549  2.318443
+1.241605  1.439119  1.646334  1.817919  1.997763  2.196632
+1.239348  1.336917  1.777062  2.028009  2.155853  2.328702
+1.178416  1.266326  1.802039  1.959820  2.145703  2.469513
+1.247702  1.328626  1.812686  1.992792  2.200638  2.499445
+1.270078  1.370907  1.882273  1.997225  2.254284  2.526050
+1.295553  1.376421  1.860437  2.076734  2.248998  2.567118
+1.304838  1.386085  1.832762  2.061619  2.219399  2.486348
+1.314313  1.381482  1.912831  2.017535  2.287746  2.576424
+1.275078  1.353772  1.858468  2.037031  2.362055  2.615420
+1.287115  1.366797  1.835524  1.961094  2.291985  2.562975
+1.256666  1.341161  1.798806  1.921264  2.333647  2.596913
+1.229284  1.337507  1.753982  1.942388  2.403549  2.602171
+1.224871  1.322981  1.792609  1.918908  2.363314  2.520583
+1.218452  1.321589  1.651493  1.884157  2.366537  2.521284
+1.193218  1.359120  1.632401  1.857625  2.322851  2.452708
+1.205474  1.368035  1.608030  1.815042  2.341851  2.574505
+1.061251  1.318432  1.545024  1.888740  2.401884  2.617020
+1.072522  1.365786  1.514127  1.893675  2.369617  2.474232
+1.111644  1.436790  1.606098  1.842456  2.382418  2.474111
+1.012061  1.316202  1.471593  1.799057  2.349432  2.455130
+1.089471  1.248571  1.572785  1.953061  2.298439  2.461784
+1.068360  1.195813  1.624024  2.111295  2.311476  2.419253
+1.147513  1.525224  1.724810  1.957167  2.387532  2.471314
+1.334336  1.568150  1.749039  1.962569  2.390633  2.484647
+1.298140  1.467881  1.814397  1.941570  2.384226  2.522176
+1.295007  1.418486  1.859466  1.962329  2.376315  2.521757
+1.335831  1.436636  1.858260  1.966332  2.446579  2.563483
+1.346492  1.477982  1.905644  1.998091  2.490052  2.584468
+1.407183  1.540763  1.879296  1.992980  2.487939  2.564009
+1.447665  1.628575  1.828196  2.053651  2.534046  2.605859
+1.524705  1.620051  1.837880  2.017915  2.592167  2.653373
+1.564584  1.647141  1.761178  2.024150  2.615248  2.656575
+1.529370  1.593981  1.683157  1.979831  2.601640  2.654391
+1.585075  1.652835  1.786770  2.031845  2.518000  2.620980
+1.588906  1.644232  1.813812  2.041481  2.610723  2.666049
+1.601362  1.686074  1.862952  2.127114  2.608859  2.655021
+1.640245  1.750920  1.921102  2.164412  2.547516  2.617193
+1.548602  1.638196  1.917398  2.092646  2.563829  2.615836
+1.515875  1.616955  1.844164  2.007026  2.528173  2.601071
+1.465872  1.572195  1.740969  2.011290  2.493415  2.581928
+1.411908  1.534275  1.669392  2.025507  2.419065  2.534991
+1.339405  1.524896  1.674545  2.018990  2.344004  2.443795
+1.300672  1.527060  1.673067  2.036189  2.269516  2.383792
+1.193083  1.476495  1.664464  1.933230  2.291004  2.414954
+1.192791  1.485591  1.649261  1.844048  2.295088  2.502001
+1.197824  1.364864  1.703691  1.827209  2.262766  2.499801
+1.138273  1.379249  1.658127  1.912486  2.389082  2.583381
+1.166597  1.357942  1.688915  1.942734  2.491527  2.589252
+1.170615  1.391547  1.721925  1.889510  2.506116  2.616390
+1.210959  1.452702  1.755617  1.844973  2.490062  2.624729
+1.212139  1.519716  1.785919  1.889270  2.551264  2.629492
+1.276001  1.664615  1.957757  2.249343  2.602286  2.677701
+1.400862  1.816183  1.994456  2.325956  2.651785  2.717305
+1.466054  1.834563  2.118572  2.372427  2.625377  2.704685
+1.578859  1.790938  2.136097  2.392831  2.638547  2.714022
+1.480700  1.816555  2.206450  2.432389  2.575887  2.645111
+1.617288  1.807665  2.241721  2.440067  2.567226  2.631745
+1.570100  1.785068  2.178210  2.348135  2.467045  2.556638
+1.579682  1.701535  2.005186  2.288766  2.434155  2.548589
+1.578691  1.674213  1.965474  2.199446  2.334867  2.479803
+1.640546  1.726915  1.991606  2.240338  2.400971  2.523628
+1.588532  1.709671  1.874418  2.160822  2.381523  2.517230
+1.447497  1.665484  1.900942  2.103382  2.397872  2.535571
+1.203022  1.599213  1.884283  2.032257  2.369015  2.504738
+1.146521  1.513193  1.880497  1.985787  2.407380  2.522482
+1.131266  1.435001  1.834092  2.111348  2.306550  2.531154
+1.176712  1.640343  1.870115  2.064938  2.313000  2.439124
+1.254490  1.590614  1.958487  2.200173  2.344272  2.479816
+1.243959  1.684492  2.016502  2.192945  2.451075  2.547334
+1.537310  1.763854  2.188639  2.371726  2.539927  2.648079
+1.646538  1.887574  2.280949  2.443446  2.593067  2.680775
+1.567456  1.876170  2.108713  2.427826  2.611726  2.691363
+1.341056  1.874127  2.114216  2.396197  2.621228  2.702770
+1.449196  1.837843  2.058401  2.307470  2.616907  2.689695
+1.313491  1.794349  1.961057  2.237499  2.597739  2.685191
+1.202175  1.706913  1.905104  2.139148  2.612890  2.693658
+1.080344  1.590487  1.846519  2.059279  2.631365  2.697376
+1.043219  1.601906  1.900346  2.141041  2.588352  2.662523
+0.984957  1.556146  1.841481  2.148769  2.577337  2.662952
+0.979403  1.553838  1.844172  2.052598  2.577754  2.641114
+0.947313  1.453890  1.836463  1.998780  2.566547  2.637546
+0.959460  1.441678  1.832870  2.106499  2.553643  2.630882
+0.951016  1.397882  1.793743  2.053066  2.492635  2.622573
+0.870727  1.369217  1.817794  2.107476  2.524230  2.627945
+0.902872  1.385159  1.754800  2.013432  2.536990  2.654823
+0.891101  1.362395  1.753579  1.878041  2.559805  2.662468
+0.835616  1.259326  1.757169  1.832338  2.486345  2.635682
+0.787419  1.132035  1.693975  1.776933  2.533180  2.616312
+0.791106  1.068132  1.697743  1.851598  2.571958  2.669553
+0.759951  1.112356  1.562357  1.855199  2.490682  2.601972
+0.792061  1.139999  1.724823  1.954458  2.608864  2.689684
+0.823952  1.270934  1.741090  2.077662  2.613199  2.669386
+0.736534  1.124969  1.743684  2.093250  2.579787  2.661721
+0.797043  1.051944  1.780229  2.240357  2.583476  2.662315
+0.923582  1.503155  1.776882  2.018470  2.613910  2.703042
+1.421538  1.735030  2.006889  2.210344  2.574319  2.670736
+1.350174  1.606122  1.963013  2.084969  2.478192  2.589945
+1.361799  1.656583  1.974082  2.173881  2.479634  2.612008
+1.319939  1.764454  2.027445  2.249293  2.529644  2.635744
+1.394028  1.664199  2.006309  2.246188  2.558094  2.671320
+1.385394  1.755426  2.080024  2.329874  2.630895  2.722673
+1.333690  1.669430  2.021492  2.250607  2.600265  2.689100
+1.341532  1.698164  1.975002  2.237112  2.560850  2.684376
+1.388610  1.785046  1.956888  2.281386  2.563576  2.643708
+1.345894  1.706236  1.842983  2.264164  2.606222  2.694785
+1.320329  1.694191  1.923363  2.218151  2.645478  2.750259
+1.332386  1.748388  2.014721  2.221780  2.602628  2.697461
+1.397603  1.715354  1.949721  2.236000  2.577802  2.661479
+1.618810  1.795968  2.016419  2.205191  2.506636  2.636829
+1.659811  1.735333  2.021086  2.175840  2.443378  2.641454
+1.539528  1.652064  1.946773  2.095081  2.446637  2.636547
+1.532272  1.592873  1.977822  2.053408  2.551491  2.674907
+1.509350  1.581109  2.004243  2.059379  2.524603  2.702937
+1.432533  1.504626  1.930707  2.042330  2.440661  2.690850
+1.194640  1.677037  2.023104  2.078391  2.446911  2.745852
+1.210373  1.824825  2.021515  2.139089  2.539931  2.659640
+1.276624  1.715436  1.952490  2.083815  2.473462  2.664346
+1.235656  1.548445  2.067341  2.118624  2.427438  2.727540
+1.283474  1.374296  1.963417  2.098418  2.474393  2.702856
+1.305021  1.394700  2.068003  2.139040  2.520168  2.706208
+1.284823  1.494312  2.055208  2.140334  2.602120  2.698828
+1.296593  1.587724  2.087205  2.156563  2.618559  2.718633
+1.252465  1.583350  2.108883  2.173872  2.600502  2.685035
+1.177439  1.612038  2.093884  2.155173  2.581066  2.695123
+1.132957  1.572991  2.135458  2.220598  2.615734  2.710569
+1.060318  1.542980  2.165747  2.230410  2.609442  2.697786
+0.993306  1.542205  2.170751  2.247209  2.631170  2.706892
+0.783750  1.568542  2.323323  2.398878  2.594196  2.690603
+0.866024  1.454427  2.113290  2.187039  2.662007  2.719943
+0.793002  1.437700  2.125666  2.225555  2.588880  2.664786
+0.863183  1.439828  2.031948  2.203948  2.586483  2.646886
+0.817301  1.443077  2.078742  2.356665  2.572146  2.635324
+0.840200  1.268198  1.973956  2.380693  2.546743  2.624124
+0.905910  1.472855  2.000805  2.420178  2.606009  2.662539
+0.885218  1.599132  2.063964  2.335379  2.688751  2.736255
+0.812099  1.480973  2.103159  2.193629  2.621360  2.702113
+0.727009  1.481278  2.088167  2.170556  2.575583  2.660557
+0.783755  1.482083  2.210773  2.281994  2.564635  2.658081
+0.810890  1.318001  2.156661  2.250146  2.565371  2.666169
+0.775372  1.352710  2.277457  2.371730  2.587244  2.655489
+0.765239  1.280609  2.227449  2.304899  2.577531  2.696870
+0.860727  1.309962  2.239215  2.358255  2.523746  2.681832
+0.828001  1.157509  2.157199  2.279201  2.554510  2.655379
+0.776568  1.131001  2.110470  2.282369  2.502240  2.634533
+0.662804  1.210648  2.214487  2.275268  2.480153  2.598167
+0.752595  1.172127  2.270252  2.354795  2.534373  2.613431
+0.769014  1.037539  2.239849  2.320190  2.523883  2.637275
+0.747299  1.036519  2.059875  2.380316  2.507719  2.677768
+0.818428  1.110448  2.132574  2.306792  2.442669  2.597844
+0.838124  1.256032  2.152521  2.304078  2.501081  2.591854
+0.842740  1.147341  2.045086  2.317073  2.459293  2.588472
+0.950977  1.150930  2.097644  2.290004  2.497415  2.643449
+0.932262  1.159756  1.945175  2.233748  2.538888  2.635754
+0.872640  1.294667  1.881084  2.112185  2.488729  2.612697
+0.953242  1.398337  1.906758  2.024454  2.396667  2.616332
+1.019160  1.447236  1.917323  2.023333  2.213019  2.528896
+0.980910  1.420444  1.857618  1.943436  2.294481  2.596120
+1.007917  1.474723  1.827586  1.921475  2.567362  2.643752
+1.057674  1.583820  1.862216  1.988312  2.507590  2.602780
+1.089480  1.610937  1.894205  2.067983  2.401427  2.589250
+1.155642  1.601524  1.853784  2.109924  2.266420  2.654880
+1.190394  1.403206  1.850320  2.129434  2.355479  2.599651
+1.165667  1.266234  1.847925  2.191760  2.352164  2.576809
+1.112543  1.237226  1.755553  2.196412  2.378413  2.515897
+1.093202  1.229320  1.630970  2.198491  2.394327  2.490062
+1.030916  1.160090  1.536996  2.150269  2.345755  2.526171
+1.090134  1.227459  1.470303  2.121663  2.325691  2.414263
+1.084185  1.353427  1.495774  2.165409  2.396637  2.501534
+1.128688  1.380138  1.551457  2.110309  2.296856  2.418999
+1.087172  1.454259  1.658795  2.020385  2.196298  2.381465
+1.039395  1.582193  1.728098  2.070179  2.301852  2.489432
+1.019025  1.646872  1.828918  2.125767  2.542468  2.624929
+1.017909  1.675444  2.009386  2.200627  2.432273  2.532754
+0.975365  1.568456  2.099629  2.243759  2.469669  2.558656
+1.045139  1.750545  2.091194  2.277034  2.473998  2.559636
+1.003490  1.670000  2.149872  2.216814  2.544142  2.591015
+0.972271  1.669349  2.066914  2.253461  2.528115  2.626794
+1.001400  1.910537  2.208899  2.322095  2.475052  2.594146
+1.106236  1.762398  2.170214  2.368326  2.532382  2.636954
+0.937567  1.570796  2.208314  2.312080  2.547601  2.604149
+0.984015  1.531648  2.154446  2.260403  2.519554  2.621365
+1.058045  1.589683  2.130473  2.238788  2.559220  2.636001
+1.126293  1.674296  2.142380  2.304378  2.581987  2.659797
+1.092169  1.547245  2.138847  2.246962  2.570924  2.653740
+1.164152  1.513575  2.120596  2.203037  2.555931  2.629117
+1.154436  1.451664  2.109876  2.193787  2.569383  2.668688
+1.171007  1.297549  2.105789  2.224294  2.529719  2.663245
+1.139370  1.343339  2.024942  2.161273  2.570054  2.662064
+1.214975  1.759488  2.013624  2.126711  2.350657  2.508933
+1.410441  1.787361  1.940449  2.082004  2.255781  2.406359
+1.192527  1.698280  1.956892  2.084836  2.235743  2.490643
+1.173627  1.448751  2.011122  2.145246  2.280142  2.534706
+1.172797  1.327177  1.938868  2.095910  2.247560  2.526844
+1.129709  1.376142  1.891533  1.985327  2.196351  2.582653
+1.195218  1.292910  1.887213  2.025135  2.200698  2.525594
+1.246281  1.338967  1.851654  2.072793  2.209074  2.457441
+1.244715  1.395538  1.916844  2.097048  2.296495  2.526646
+1.346432  1.453272  2.128410  2.313839  2.566271  2.666215
+1.392181  1.506569  2.060420  2.183828  2.523643  2.656421
+1.397671  1.478362  2.037869  2.140024  2.522879  2.634883
+1.405078  1.437969  2.064698  2.121678  2.484341  2.664086
+1.527970  1.731644  2.001400  2.182281  2.477459  2.609679
+1.602215  1.694049  2.065008  2.176143  2.567575  2.650751
+1.549243  1.668152  2.061940  2.136053  2.575954  2.678540
+1.590489  1.693208  1.921586  2.193585  2.522338  2.657822
+1.593120  1.715596  2.057856  2.172814  2.502009  2.607762
+1.508461  1.713948  2.053457  2.146855  2.383043  2.628673
+1.500942  1.577870  1.978516  2.080955  2.517866  2.640817
+1.503819  1.559203  1.933282  2.030596  2.516193  2.657495
+1.430951  1.506436  1.856364  2.014512  2.406913  2.583800
+1.394417  1.471155  1.914772  2.015327  2.414514  2.568928
+1.376718  1.476739  1.841743  1.961573  2.459621  2.552505
+1.304829  1.509257  1.807862  1.899025  2.532604  2.616563
+1.486241  1.646868  1.928992  2.176641  2.503384  2.645535
+1.477068  1.576408  1.937301  2.094449  2.468734  2.643633
+1.431493  1.551268  1.935807  2.027994  2.468760  2.605588
+1.427171  1.670820  1.944981  2.109944  2.482745  2.652433
+1.393190  1.649564  1.991075  2.070334  2.586450  2.667337
+1.406966  1.518528  1.967049  2.067755  2.501722  2.624107
+1.399129  1.487381  1.880327  1.972568  2.359193  2.604810
+1.419452  1.541906  1.920889  2.015257  2.416437  2.547537
+1.447736  1.626647  1.911603  2.037838  2.508304  2.609091
+1.507943  1.649223  1.954490  2.063843  2.515779  2.591471
+1.512511  1.697882  1.919266  2.077175  2.545774  2.631085
+1.577487  1.652922  1.969378  2.057105  2.533497  2.610477
+1.604710  1.687839  1.943635  2.030700  2.552461  2.659467
+1.634825  1.710086  1.943508  2.035741  2.553037  2.650522
+1.629110  1.721048  1.907265  2.020140  2.570097  2.652611
+1.653862  1.731013  1.917069  2.016503  2.551305  2.678978
+1.675623  1.740253  1.923108  1.995468  2.543890  2.693466
+1.704324  1.761003  1.892088  1.958603  2.520344  2.709583
+1.631746  1.698022  1.879765  1.974816  2.475043  2.688708
+1.563394  1.662351  1.863499  1.961656  2.492069  2.692141
+1.535271  1.621802  1.864516  2.016880  2.457202  2.701452
+1.463627  1.689995  1.942593  2.019493  2.516076  2.684085
+1.427161  1.545730  1.922601  1.983390  2.549083  2.724037
+1.387863  1.469421  1.874287  2.047091  2.486568  2.643007
+1.364743  1.462745  1.908513  2.076519  2.468769  2.627416
+1.421611  1.616670  2.074387  2.243630  2.604811  2.697119
+1.443567  1.802480  2.145890  2.311026  2.615127  2.704969
+1.402806  1.864810  2.209376  2.377972  2.654288  2.731440
+1.472673  1.860803  2.162882  2.447267  2.648421  2.719024
+1.518497  1.794725  2.075011  2.339205  2.552102  2.655931
+1.503597  1.758472  2.111549  2.304480  2.551002  2.643546
+1.466759  1.587712  2.046144  2.276602  2.546510  2.649906
+1.414608  1.499164  2.000686  2.080851  2.549084  2.654414
+1.324617  1.597419  1.961703  2.075259  2.518788  2.638260
+1.262448  1.666067  1.961546  2.098269  2.549101  2.630367
+1.220869  1.632115  1.947651  2.054954  2.515971  2.607563
+1.136650  1.569138  1.923253  2.011403  2.513979  2.612924
+1.058570  1.570577  1.921267  2.037973  2.484487  2.569497
+1.039823  1.492368  1.862383  2.113321  2.462634  2.586287
+1.291651  1.546687  1.888427  2.160338  2.444567  2.573682
+1.154151  1.629832  1.978719  2.114524  2.505413  2.616168
+1.018988  1.844229  2.003497  2.145640  2.430051  2.549664
+1.003639  1.900247  2.103968  2.200810  2.555267  2.678873
+1.007182  1.652528  2.033376  2.117896  2.534356  2.593837
+1.014065  1.625311  2.073565  2.163998  2.546138  2.611829
+1.009846  1.729007  2.001610  2.190071  2.554550  2.635426
+1.019489  1.599817  2.062920  2.180981  2.585351  2.651906
+1.042282  1.559849  2.061719  2.184907  2.608829  2.711272
+1.093985  1.606698  2.067049  2.179456  2.578115  2.647082
+1.117524  1.554503  2.010457  2.171257  2.524192  2.604614
+1.189148  1.687116  2.026818  2.220744  2.584656  2.673603
+1.184285  1.592927  2.011407  2.140558  2.575633  2.652764
+1.243271  1.544342  1.991354  2.103724  2.547726  2.633837
+1.249802  1.530059  1.930460  2.044509  2.489498  2.611045
+1.317227  1.550858  1.927474  2.019107  2.563575  2.632413
+1.300146  1.571198  1.817213  1.967321  2.572012  2.659755
+1.304786  1.459074  1.804350  1.873800  2.572345  2.677847
+1.272113  1.387927  1.710588  1.798443  2.519124  2.630967
+1.168824  1.271438  1.680467  1.847635  2.472587  2.636108
+1.127715  1.380423  1.702693  1.948341  2.254799  2.516590
+1.037344  1.362071  1.698870  1.943363  2.319984  2.576108
+0.912701  1.215239  1.774758  2.057933  2.407301  2.609739
+0.884045  1.283341  1.740086  2.012038  2.332329  2.530152
+0.859928  1.361393  1.787767  2.032428  2.439162  2.572497
+0.933575  1.497313  1.860114  2.007764  2.460777  2.636583
+0.980843  1.376674  1.808267  1.899302  2.551384  2.660680
+0.888314  1.390836  1.819063  1.938604  2.611726  2.713704
+0.839112  1.455052  1.864246  1.932569  2.561260  2.649480
+0.851738  1.633441  1.854938  2.065105  2.591532  2.637966
+0.927993  1.739190  1.882023  2.133201  2.585017  2.640778
+0.938681  1.795656  1.962111  2.138930  2.565233  2.627897
+0.939389  1.842127  2.021817  2.196345  2.611519  2.658322
+0.876668  1.922758  2.066598  2.238607  2.657831  2.709139
+0.928890  1.831807  2.053719  2.203623  2.653635  2.695408
+0.843177  1.785949  2.180039  2.258075  2.596807  2.669868
+0.904710  1.738574  2.045482  2.171335  2.659082  2.701770
+0.870576  1.672854  2.046684  2.160295  2.663395  2.706284
+0.863208  1.611276  2.039577  2.131986  2.662744  2.710206
+0.911587  1.521477  1.972249  2.117701  2.671514  2.736290
+0.857624  1.506231  1.927459  2.092066  2.599004  2.671353
+0.876724  1.386211  1.930102  2.020125  2.640246  2.715714
+0.822485  1.363083  1.951099  2.012089  2.546285  2.704224
+0.896312  1.299233  1.946153  2.039999  2.427568  2.660429
+0.993275  1.379765  2.001120  2.083441  2.476481  2.621083
+1.111974  1.369262  1.980570  2.050077  2.518420  2.654724
+1.168214  1.421156  1.929649  2.013732  2.513895  2.659462
+1.185532  1.477308  1.941700  2.021792  2.545835  2.636829
+1.134677  1.498395  1.996860  2.077054  2.487095  2.605961
+1.411729  1.500808  1.930565  2.251695  2.391409  2.514752
+1.387101  1.551631  1.939267  2.134432  2.390647  2.538102
+1.436468  1.601632  1.856306  2.001721  2.498428  2.579682
+1.490762  1.673865  1.865367  2.015258  2.490944  2.589599
+1.532290  1.665821  1.854110  1.987787  2.544314  2.634547
+1.563136  1.683249  1.819205  1.981344  2.592402  2.655991
+1.532691  1.642869  1.795089  1.955952  2.595574  2.688667
+1.506939  1.596868  1.724719  1.902522  2.497152  2.646767
+1.385229  1.553302  1.733776  1.993489  2.385677  2.620193
+1.191373  1.508094  1.914117  2.177183  2.460347  2.600638
+0.990202  1.268417  1.760300  1.988487  2.516663  2.661016
+1.004888  1.273030  1.919583  1.976961  2.621532  2.711155
+1.013289  1.479166  1.983769  2.021110  2.561293  2.681392
+1.094384  1.424205  1.985002  2.164791  2.592137  2.670975
+1.057765  1.377512  1.866113  2.165416  2.490671  2.623341
+1.001768  1.321304  1.902289  2.133880  2.499889  2.659347
+0.896048  1.414778  1.927546  2.127605  2.570653  2.658502
+0.862503  1.586972  1.946548  2.153624  2.615123  2.677873
+0.837783  1.700010  1.932982  2.209447  2.588567  2.687532
+0.901209  1.639772  1.999974  2.070577  2.515297  2.763152
+0.955829  1.601245  2.008965  2.112233  2.503888  2.592844
+0.939285  1.704094  2.027412  2.125922  2.430007  2.538916
+0.948268  1.700873  2.002768  2.088348  2.563468  2.622110
+0.959154  1.624274  2.005824  2.077760  2.577716  2.658733
+0.932538  1.593435  1.952831  2.044660  2.567978  2.644497
+0.933107  1.590563  1.945695  2.111900  2.534278  2.608873
+0.943808  1.649088  1.897019  2.104647  2.578170  2.689758
+1.003034  1.619161  1.930228  2.216721  2.582337  2.637890
+0.936810  1.692346  1.965525  2.118648  2.628517  2.684797
+0.973578  1.737821  1.975673  2.106344  2.658295  2.722445
+0.955324  1.750194  1.961437  2.075373  2.655612  2.731757
+0.994013  1.727390  1.946779  2.062413  2.643379  2.738490
+1.005363  1.693919  1.929868  2.100177  2.618754  2.684861
+0.967862  1.640078  1.930261  2.021548  2.639890  2.726662
+0.928258  1.579359  1.864413  1.973012  2.638908  2.717888
+1.058334  1.410591  1.870850  2.066023  2.451575  2.633697
+1.123046  1.486876  1.862969  2.086078  2.412975  2.591738
+1.177472  1.431539  1.849290  2.099756  2.423335  2.566135
+1.187028  1.443506  1.882075  1.983318  2.550673  2.639389
+1.267969  1.628389  1.932608  2.043278  2.552232  2.641727
+1.355546  1.701559  1.924241  2.034556  2.590180  2.660965
+1.472056  1.739983  1.914264  2.052330  2.573889  2.644926
+1.461490  1.790656  1.911310  2.057871  2.525599  2.587235
+1.542347  1.742399  1.901654  2.063063  2.499169  2.580661
+1.550813  1.642896  1.877392  1.995154  2.474361  2.561166
+1.625354  1.724756  1.899115  2.052586  2.447095  2.556852
+1.636703  1.742201  1.904488  2.155317  2.470314  2.569291
+1.608688  1.701026  1.957110  2.085583  2.465316  2.552203
+1.517569  1.685169  1.923050  2.028968  2.382899  2.503932
+1.215848  1.648126  1.842885  2.049966  2.393827  2.484346
+1.158500  1.452995  1.752665  1.859020  2.467269  2.575520
+1.128274  1.384146  1.801504  1.899178  2.472451  2.609988
+1.080623  1.414338  1.812493  1.916642  2.422686  2.620118
+1.104866  1.492913  1.854038  1.971940  2.444002  2.583583
+1.235805  1.437823  1.919484  2.042792  2.483999  2.617147
+1.167412  1.407601  1.774394  2.073573  2.390599  2.543323
+1.096565  1.317231  1.782210  2.013544  2.394372  2.571806
+1.104307  1.206800  1.718582  2.001006  2.351339  2.505639
+1.047321  1.316889  1.824322  2.050773  2.417158  2.531028
+1.087184  1.408401  1.843144  2.031666  2.440481  2.544264
+1.108521  1.394200  1.760026  2.005728  2.435035  2.552154
+1.121767  1.340590  1.749504  1.963633  2.493819  2.609645
+1.122415  1.452714  1.793131  2.030414  2.502133  2.593239
+1.026877  1.468099  1.745342  1.860466  2.483684  2.579747
+0.971670  1.244091  1.752977  1.837331  2.384716  2.625316
+0.917302  1.104410  1.674928  1.792426  2.336189  2.629469
+0.961560  1.088356  1.555776  1.663706  2.282322  2.579748
+0.919563  1.063279  1.573205  1.711100  2.422693  2.675976
+0.875889  1.022614  1.380839  1.829163  2.584656  2.667378
+0.763749  1.018806  1.506319  1.707976  2.471526  2.595865
+0.886944  1.031388  1.425057  1.710023  2.427922  2.576385
+0.890351  1.037652  1.443986  1.587883  2.520205  2.695833
+0.906256  1.035046  1.405613  1.523743  2.536532  2.596081
+0.929418  1.061071  1.157090  1.566597  2.528260  2.694068
+0.917396  1.106117  1.253042  1.389506  2.551566  2.709098
+0.910230  1.042070  1.162527  1.362129  2.393076  2.605349
+0.804288  1.059586  1.418081  1.530362  2.410566  2.663442
+0.907675  1.046288  1.392541  1.508232  2.495351  2.692340
+0.835212  1.126874  1.350498  1.463210  2.567735  2.694674
+0.770295  1.150701  1.428259  1.601173  2.610228  2.683669
+0.924536  1.075405  1.468526  1.669865  2.543683  2.693196
+0.972382  1.191757  1.544758  1.638670  2.535321  2.642972
+0.903877  1.101926  1.510782  1.602659  2.487038  2.638272
+0.881279  1.096901  1.554249  1.644297  2.424659  2.557575
+0.866115  1.118877  1.603042  1.702467  2.543898  2.649301
+0.906645  1.160248  1.672021  1.747258  2.517909  2.650863
+0.861085  1.205864  1.660991  1.847091  2.462741  2.632034
+0.837175  1.187776  1.806042  1.889495  2.508608  2.684557
+0.797709  1.178516  1.903177  2.021653  2.546180  2.690072
+0.802875  1.262753  1.923936  2.000576  2.568440  2.670106
+0.766638  1.320827  1.961021  2.058945  2.582312  2.646725
+0.811579  1.455194  2.011480  2.084784  2.548418  2.639933
+0.829770  1.484961  2.052714  2.127227  2.530640  2.608181
+0.799011  1.567454  2.155632  2.265108  2.573173  2.668504
+0.730379  1.358614  2.125791  2.194588  2.518703  2.605426
+0.720667  1.277836  2.042808  2.111923  2.592800  2.675300
+0.777663  1.163703  2.066790  2.179199  2.570004  2.675513
+0.839969  1.373176  2.185884  2.304679  2.509358  2.602576
+0.815752  1.915221  2.233635  2.288481  2.569983  2.628428
+1.191882  1.945689  2.175132  2.299053  2.523524  2.632041
+1.036281  1.742208  2.072713  2.141555  2.573194  2.641551
+1.042507  1.303046  2.012892  2.154612  2.530678  2.649182
+1.109942  1.204237  1.928687  2.058228  2.384097  2.639570
+1.187387  1.287703  1.954253  2.071260  2.382559  2.641811
+1.239189  1.327757  1.930550  2.015277  2.361685  2.627501
+1.292084  1.351985  1.938008  2.017320  2.411502  2.663432
+1.306236  1.382401  1.918450  2.038312  2.339392  2.637738
+1.330235  1.401641  1.873760  1.990443  2.185496  2.510909
+1.356391  1.459759  1.883388  1.980460  2.264547  2.541810
+1.347396  1.438637  1.891675  2.018006  2.302572  2.643809
+1.300877  1.390171  1.889271  1.972933  2.337515  2.605637
+1.318667  1.410121  1.895352  1.990366  2.384682  2.654040
+1.309274  1.425501  1.966145  2.021896  2.501117  2.698509
+1.293853  1.370923  1.908443  1.999149  2.465481  2.673998
+1.277395  1.382844  2.002299  2.066843  2.496853  2.664070
+1.245384  1.422441  2.002908  2.070718  2.556839  2.666388
+1.272587  1.491087  2.012301  2.129241  2.562307  2.657432
+1.265182  1.533940  2.020942  2.093088  2.498380  2.630954
+1.265700  1.477033  2.103009  2.196534  2.455284  2.619887
+1.288505  1.642454  2.093854  2.247833  2.561691  2.658788
+1.410258  1.828971  2.171872  2.374134  2.564587  2.653381
+1.353887  1.710043  2.209331  2.426043  2.629318  2.702189
+1.413615  1.766928  2.137724  2.434853  2.632060  2.702909
+1.459054  1.706939  2.135084  2.377030  2.626415  2.708945
+1.498018  1.687923  2.094822  2.342946  2.558778  2.665699
+1.413908  1.588267  2.086727  2.293084  2.513587  2.642131
+1.399998  1.553342  1.938772  2.183871  2.458665  2.610409
+1.373521  1.449791  1.880601  2.079841  2.298236  2.559768
+1.367538  1.440752  1.973770  2.086070  2.339106  2.621913
+1.368842  1.460821  2.006053  2.129789  2.391520  2.650517
+1.375993  1.496235  2.050052  2.130850  2.453915  2.698625
+1.340575  1.484156  2.084130  2.140940  2.549924  2.685428
+1.389975  1.553009  2.063781  2.147982  2.592260  2.703825
+1.247451  1.503376  2.044299  2.136485  2.344491  2.599169
+1.315110  1.540850  2.028329  2.116330  2.272535  2.431545
+1.298833  1.587487  2.071926  2.185875  2.335690  2.500779
+1.293658  1.562430  2.031101  2.149606  2.408168  2.517292
+1.357545  1.513305  1.998085  2.153047  2.450464  2.583804
+1.314414  1.517423  2.079463  2.179438  2.522288  2.616203
+1.237750  1.513563  2.052227  2.181066  2.539042  2.628158
+1.208558  1.486041  2.046503  2.194666  2.489982  2.636673
+1.196570  1.462494  2.073139  2.230856  2.547633  2.700603
+1.080935  1.459427  2.110500  2.217708  2.538133  2.678354
+1.094483  1.378608  2.167880  2.246181  2.567935  2.691322
+0.942435  1.463343  2.253533  2.330775  2.538479  2.626769
+0.828468  1.390170  2.152319  2.218028  2.545274  2.621490
+0.883311  1.334196  2.094816  2.191259  2.475576  2.573464
+0.863185  1.418682  2.080489  2.166381  2.556104  2.714086
+0.848520  1.391080  2.049319  2.134194  2.702541  2.780818
+0.826225  1.373582  2.037386  2.120576  2.736093  2.782594
+0.823246  1.343853  2.033890  2.111803  2.740872  2.787067
+0.833848  1.336791  2.045450  2.118012  2.699609  2.796181
+0.811654  1.321345  2.094991  2.178116  2.494230  2.649899
+0.947528  1.361146  2.127848  2.219008  2.511382  2.668194
+0.875759  1.251606  2.133422  2.241748  2.473825  2.662930
+0.933534  1.448444  2.139134  2.244510  2.486761  2.606936
+0.945109  1.280801  2.208944  2.335059  2.511318  2.614528
+0.956935  1.371241  2.107196  2.194521  2.403252  2.573030
+0.981000  1.251932  2.147964  2.266597  2.440418  2.624374
+1.061610  1.231691  2.076021  2.233401  2.438599  2.636988
+1.018874  1.354035  1.998033  2.260078  2.443139  2.554775
+1.080301  1.301891  2.034629  2.145600  2.415056  2.591218
+1.133867  1.359760  2.063950  2.164629  2.439392  2.628661
+1.125038  1.414128  1.997540  2.103717  2.392421  2.599578
+1.167273  1.393564  1.998177  2.076478  2.441776  2.643288
+1.198696  1.421193  1.967983  2.057020  2.432820  2.645067
+1.256230  1.378074  1.941853  2.019326  2.444584  2.608853
+1.295565  1.412154  1.932411  2.008349  2.430053  2.649016
+1.281347  1.464522  1.888236  2.006518  2.425280  2.635204
+1.270582  1.406704  1.901187  1.969293  2.470983  2.647901
+1.266697  1.372887  1.871811  1.957591  2.414971  2.648622
+1.194388  1.351744  1.888250  1.978092  2.400857  2.662660
+1.198872  1.299839  1.864283  1.963651  2.362794  2.619509
+1.126580  1.240104  1.902544  1.997646  2.331426  2.608634
+1.104618  1.214183  1.879788  2.014306  2.251659  2.573373
+1.024288  1.193207  1.868916  2.127876  2.376009  2.623451
+1.000362  1.230212  1.960304  2.075244  2.329353  2.584128
+0.977548  1.321985  1.988755  2.104256  2.381026  2.607919
+0.927608  1.447916  2.027888  2.123013  2.478479  2.585880
+0.887733  1.516534  2.046895  2.153890  2.480515  2.582006
+0.898681  1.564754  2.091528  2.179653  2.573940  2.676783
+0.974718  1.500859  2.081966  2.177780  2.532281  2.634995
+1.023818  1.390635  2.060590  2.142028  2.469386  2.636908
+1.106581  1.431053  1.977134  2.097146  2.471693  2.659120
+1.201259  1.485663  1.944652  2.112542  2.500250  2.665927
+1.285694  1.520657  1.911058  2.044248  2.487710  2.665801
+1.362495  1.534785  1.910552  1.990936  2.505705  2.661527
+1.434594  1.514838  1.934187  2.017407  2.501527  2.693875
+1.420840  1.519491  1.909348  1.986650  2.460403  2.688194
+1.404412  1.469806  1.964287  2.054233  2.366794  2.655269
+1.388287  1.466909  1.964052  2.058950  2.286531  2.604935
+1.367998  1.434810  1.857703  2.007116  2.196577  2.604187
+1.300836  1.380544  1.740254  2.046889  2.235228  2.521906
+1.231299  1.321604  1.867230  2.147627  2.354630  2.579138
+1.154924  1.255903  1.932323  2.164374  2.392832  2.605994
+1.098663  1.202218  1.948275  2.150159  2.492596  2.625742
+1.057458  1.221852  1.869129  2.268825  2.456540  2.580362
+1.033078  1.150105  1.708873  2.264876  2.476044  2.563612
+0.988998  1.159268  1.962027  2.302711  2.448723  2.560725
+1.028425  1.228689  2.025910  2.260366  2.561850  2.661757
+0.934860  1.348208  2.053889  2.214742  2.525301  2.647713
+0.919150  1.264565  2.068138  2.183398  2.534979  2.644315
+0.975247  1.362233  2.052147  2.231420  2.582800  2.724482
+0.954336  1.311177  1.977372  2.238157  2.478111  2.617046
+0.941853  1.335982  1.976422  2.219013  2.579491  2.714299
+0.928694  1.366450  1.884879  2.183146  2.580560  2.657594
+0.986067  1.338370  1.954317  2.187863  2.566522  2.638835
+0.912646  1.284402  1.814142  2.175069  2.553933  2.638518
+0.968965  1.310497  1.839690  2.078084  2.590335  2.660573
+0.977192  1.304629  1.880951  2.127022  2.598044  2.712114
+1.023839  1.299619  1.944708  2.103778  2.625919  2.730897
+1.110208  1.286313  1.959383  2.053969  2.564587  2.676132
+1.028136  1.324243  1.976740  2.094942  2.586202  2.754727
+1.129799  1.269907  2.011874  2.109219  2.588902  2.696539
+1.056967  1.340484  2.016171  2.105554  2.557611  2.747157
+1.037500  1.255766  2.029385  2.136193  2.511776  2.709627
+1.006157  1.417167  2.071949  2.132612  2.543898  2.701957
+1.136962  1.416211  2.050339  2.112042  2.449673  2.695205
+1.135319  1.436267  2.083850  2.194924  2.386385  2.656934
+1.094073  1.385456  2.015160  2.113333  2.320097  2.641531
+1.025929  1.360649  1.878300  1.981456  2.128037  2.458938
+1.142747  1.416162  1.901013  2.054884  2.170210  2.459052
+1.093211  1.488385  1.801376  2.073578  2.203432  2.494834
+1.161243  1.263262  1.784814  2.071204  2.194577  2.436217
+1.010788  1.141181  1.728171  2.118721  2.251271  2.426326
+1.083805  1.275984  1.888426  2.068392  2.227464  2.511105
+1.093824  1.303401  1.924085  2.183963  2.348527  2.531702
+1.409867  1.540059  1.722330  2.049905  2.235685  2.389249
+1.466595  1.617030  1.819393  2.035808  2.439730  2.543324
+1.526883  1.811727  1.926153  2.129197  2.481471  2.556058
+1.420465  1.731610  1.925362  2.081119  2.474447  2.570275
+1.248374  1.462520  1.699273  1.907107  2.355354  2.484796
+1.183224  1.558159  1.646615  1.999807  2.374069  2.461600
+1.143841  1.513288  1.675690  1.906750  2.428362  2.518793
+1.066986  1.500051  1.667526  1.961464  2.445898  2.521565
+1.046648  1.520761  1.705160  1.878376  2.459759  2.532729
+1.013709  1.559530  1.737535  1.955854  2.437820  2.515857
+1.021952  1.586883  1.737034  1.929179  2.523644  2.577879
+0.942307  1.579146  1.776104  2.060265  2.437220  2.517653
+0.914226  1.642076  1.812801  2.001091  2.508510  2.570062
+0.952017  1.688066  1.935018  2.016153  2.446793  2.563584
+0.856280  1.697514  1.902727  2.012686  2.522414  2.584398
+0.891878  1.553150  1.935497  2.046974  2.532664  2.594967
+0.845424  1.602286  1.937720  2.027521  2.583016  2.649168
+0.876501  1.716624  1.939566  2.067536  2.588264  2.625363
+0.901014  1.864369  1.978925  2.075191  2.462666  2.609798
+0.911677  1.767853  1.947788  2.072575  2.595744  2.634946
+0.937394  1.708734  1.927739  2.054606  2.574109  2.647431
+1.003647  1.614615  1.942062  2.035984  2.592009  2.664724
+1.089415  1.563712  1.910690  1.974956  2.590910  2.681816
+1.180196  1.457231  1.840836  1.921595  2.573409  2.659354
+1.239380  1.444276  1.818908  1.893870  2.559595  2.657419
+1.377315  1.528992  1.744904  1.862220  2.591155  2.669066
+1.504904  1.589455  1.777756  1.887229  2.506207  2.617754
+1.628411  1.697438  1.830602  1.957574  2.495413  2.652982
+1.655345  1.726761  1.914454  2.042947  2.589709  2.658972
+1.698171  1.754006  1.967189  2.090429  2.602705  2.677128
+1.676303  1.767709  2.042847  2.156668  2.628324  2.690687
+1.724974  1.789927  2.022254  2.138454  2.576232  2.671774
+1.748186  1.802674  2.037781  2.180248  2.542513  2.638948
+1.727494  1.820586  1.984490  2.159068  2.525266  2.641113
+1.681162  1.820947  1.975700  2.157376  2.485796  2.590414
+1.695585  1.807190  1.993679  2.180888  2.380331  2.560860
+1.706934  1.810695  2.008115  2.133097  2.420753  2.641751
+1.654579  1.765733  2.024758  2.124029  2.493478  2.660848
+1.482280  1.849534  2.039337  2.240485  2.457215  2.547774
+1.603912  1.832539  2.051601  2.251630  2.461138  2.560412
+1.611914  1.787316  2.134457  2.250322  2.620939  2.678279
+1.702258  1.857664  2.093573  2.245781  2.633559  2.687798
+1.692364  1.776254  2.026193  2.275357  2.580552  2.683245
+1.587105  1.750297  1.997944  2.242069  2.586538  2.691453
+1.535548  1.765338  2.053611  2.233619  2.646730  2.717875
+1.189624  1.336795  1.763750  2.001818  2.436073  2.594289
+1.190961  1.322629  1.662495  2.028538  2.347408  2.530977
+1.170930  1.394685  1.727435  2.022812  2.382661  2.552602
+1.082797  1.383312  1.623231  1.825654  2.463128  2.574492
+1.058861  1.316419  1.617844  1.734402  2.496675  2.607354
+1.031745  1.332707  1.534727  1.707419  2.433275  2.544209
+1.096632  1.405927  1.540583  1.719915  2.509655  2.573209
+1.088142  1.381934  1.507222  1.618554  2.484112  2.618437
+1.128355  1.341806  1.494171  1.715551  2.495969  2.579865
+1.175042  1.360111  1.572899  1.757164  2.481162  2.588909
+1.251837  1.388286  1.580411  1.744290  2.530232  2.614281
+1.310739  1.444267  1.657251  1.823494  2.515110  2.614602
+1.329594  1.483659  1.703926  1.871461  2.532374  2.621921
+1.364647  1.503101  1.755842  1.919028  2.547482  2.624406
+1.400143  1.516781  1.808646  1.943813  2.572341  2.655551
+1.403936  1.536778  1.854571  1.961169  2.527770  2.650144
+1.441635  1.534902  1.873629  1.970753  2.528116  2.670832
+1.448614  1.528669  1.860977  1.951947  2.473243  2.657815
+1.451619  1.547843  1.824154  2.019980  2.462454  2.654097
+1.474914  1.548478  1.890892  1.995469  2.484609  2.659992
+1.432352  1.541523  1.888921  2.060202  2.407091  2.630443
+1.443739  1.529785  1.892698  1.996592  2.373799  2.620977
+1.379224  1.489730  1.897357  2.016742  2.416784  2.627496
+1.377069  1.463119  1.911655  2.022620  2.355389  2.608649
+1.331805  1.431037  1.929174  2.046904  2.374045  2.605001
+1.261392  1.448545  1.975458  2.082519  2.366860  2.620796
+1.222534  1.418974  1.979786  2.116310  2.439587  2.664630
+1.142938  1.304442  1.984504  2.071356  2.473077  2.672948
+1.163073  1.268521  1.930445  2.046302  2.305097  2.594448
+1.102508  1.246087  1.951734  2.103272  2.299777  2.571979
+1.010568  1.147332  1.902536  2.046240  2.288021  2.566997
+1.010466  1.307000  1.827652  2.076872  2.333263  2.555967
+1.246338  1.534633  1.859079  2.187994  2.388066  2.541619
+1.200493  1.578943  1.899233  2.165025  2.448881  2.583181
+0.969958  1.321171  1.879198  2.166270  2.417955  2.602455
+0.883738  1.359575  2.004523  2.100728  2.516977  2.633388
+0.844286  1.405546  2.057051  2.140524  2.516435  2.660060
+0.862435  1.502332  2.107411  2.205164  2.558187  2.660491
+0.940459  1.428240  2.139821  2.233319  2.564481  2.673761
+0.930987  1.583981  2.021904  2.152394  2.404035  2.506344
+1.046556  1.798258  1.988424  2.129290  2.357578  2.453538
+1.053483  1.593749  2.104331  2.232679  2.372807  2.498150
+1.137645  1.642783  2.089155  2.231807  2.383165  2.575567
+1.180782  1.899843  2.114705  2.223340  2.453147  2.554915
+1.144768  1.795798  2.058166  2.194105  2.452139  2.558749
+1.132549  1.688302  1.980246  2.107445  2.321949  2.446573
+1.155835  1.527004  1.951246  2.101869  2.265669  2.423260
+1.218988  1.551877  1.978933  2.129503  2.365239  2.547894
+1.269955  1.592834  1.957403  2.059254  2.477360  2.620075
+1.304775  1.597146  1.974266  2.084408  2.414413  2.613437
+1.304611  1.645522  1.976796  2.100584  2.364468  2.510600
+1.357449  1.721619  2.013975  2.141789  2.385178  2.512136
+1.335725  1.833907  2.001270  2.155846  2.401439  2.496098
+1.311398  1.558292  1.938760  2.063279  2.307274  2.526616
+1.360360  1.440763  1.893578  2.075310  2.237527  2.504599
+1.331599  1.468494  1.928903  2.060963  2.318029  2.567821
+1.318611  1.537603  1.924470  2.015195  2.358808  2.593307
+1.214364  1.546191  1.882099  1.995250  2.377928  2.652939
+1.296335  1.566534  1.875140  2.003277  2.476321  2.631527
+1.397784  1.586154  1.861480  2.030113  2.587065  2.654646
+1.475237  1.644203  1.915883  2.047027  2.653267  2.714423
+1.524741  1.716019  1.957822  2.067654  2.623703  2.690243
+1.578686  1.677809  1.940919  2.066782  2.613829  2.704583
+1.558659  1.702533  1.930114  2.028274  2.615049  2.686527
+1.500895  1.699904  1.908920  1.998738  2.620634  2.691280
+1.442946  1.702672  1.900985  1.975333  2.624730  2.699244
+1.372883  1.638290  1.917707  2.028286  2.626184  2.697452
+1.284224  1.656214  1.897845  1.992564  2.644425  2.707381
+1.204035  1.651822  1.889771  1.992564  2.638494  2.709577
+1.149198  1.622068  1.884510  1.979246  2.632691  2.699244
+1.133732  1.618626  1.895041  1.977544  2.625046  2.694884
+1.157568  1.662329  1.889784  1.978395  2.626035  2.684544
+1.218943  1.667105  1.879063  2.005165  2.602271  2.658132
+1.224226  1.626864  1.791981  1.894650  2.517637  2.647870
+1.354348  1.558760  1.843077  1.930892  2.571225  2.630861
+1.339527  1.595092  1.762248  1.979267  2.546017  2.613198
+1.389217  1.592419  1.859636  1.962120  2.550950  2.637714
+1.441267  1.590433  1.879393  1.987047  2.582006  2.666738
+1.431033  1.609808  1.890274  2.037874  2.525040  2.672056
+1.468384  1.575421  1.945848  2.029866  2.551470  2.705315
+1.450092  1.601430  1.954103  2.062799  2.534132  2.666966
+1.482171  1.565438  1.973588  2.124154  2.520208  2.656022
+1.429418  1.560169  1.984368  2.078415  2.510933  2.668346
+1.440913  1.587927  1.976090  2.097963  2.464144  2.621669
+1.432466  1.582610  1.973345  2.159930  2.500511  2.668329
+1.429101  1.593924  1.974811  2.070207  2.527049  2.683794
+1.377247  1.571046  1.937033  2.094336  2.488609  2.653189
+1.485270  1.572718  1.935520  2.015863  2.471891  2.687018
+1.473606  1.569260  1.872618  1.962880  2.412797  2.654369
+1.486059  1.580245  1.866252  1.975544  2.318749  2.586712
+1.465213  1.581118  1.784993  1.913021  2.172477  2.555915
+1.433656  1.566339  1.728508  1.853259  2.061966  2.413952
+1.367612  1.543842  1.700068  1.854972  2.034622  2.282022
+1.503264  1.657179  1.809362  1.937669  2.143191  2.435605
+1.340742  1.593266  1.833843  2.129408  2.468938  2.572839
+1.336721  1.481696  1.944774  2.230613  2.480290  2.580121
+1.321318  1.603141  1.968333  2.203371  2.515102  2.650047
+1.341931  1.668341  1.988838  2.185252  2.564141  2.653216
+1.315554  1.648897  1.959899  2.147638  2.516885  2.612616
+1.277314  1.620218  2.001858  2.229409  2.531549  2.621818
+1.305168  1.578599  2.038627  2.295512  2.565341  2.654838
+1.330511  1.609911  1.991543  2.262708  2.563339  2.665956
+1.374004  1.683930  1.980067  2.338575  2.595603  2.682727
+1.268703  1.389752  1.885378  2.110404  2.488114  2.638645
+1.216813  1.310045  1.854691  2.036714  2.277594  2.566534
+1.234945  1.337806  1.949427  2.059361  2.295326  2.566468
+1.188939  1.302387  1.996200  2.107442  2.349193  2.585236
+1.268977  1.440154  2.024771  2.136855  2.444005  2.664042
+1.274373  1.383125  2.066734  2.151173  2.407560  2.654201
+1.264553  1.356123  2.001656  2.118864  2.287784  2.569535
+1.234337  1.329784  2.063392  2.150768  2.367188  2.598596
+1.155210  1.257442  2.082496  2.211439  2.390593  2.620100
+1.199455  1.265557  1.934979  2.226691  2.540894  2.664195
+1.304701  1.526851  1.954550  2.174656  2.477694  2.621713
+1.638067  1.896263  2.077081  2.361007  2.646027  2.718839
+1.643821  1.943109  2.131987  2.329624  2.578717  2.645464
+1.640898  1.989224  2.161468  2.269205  2.586475  2.655395
+1.723007  1.910073  2.070189  2.259565  2.564392  2.640342
+1.652067  1.998733  2.135937  2.352824  2.652512  2.717475
+1.680722  2.074091  2.269666  2.453470  2.699939  2.763041
+1.695085  2.058973  2.193637  2.313571  2.639345  2.699445
+1.782955  2.014033  2.224899  2.332287  2.645355  2.724401
+1.705960  1.974745  2.180829  2.256084  2.575177  2.716938
+1.662556  1.988643  2.115183  2.205279  2.548376  2.657655
+1.562053  1.843896  2.173269  2.265891  2.477950  2.695966
+1.685920  1.795837  2.078330  2.180138  2.465369  2.667314
+1.680613  1.738555  1.994736  2.131193  2.473191  2.649544
+1.659289  1.833639  2.000087  2.140167  2.564913  2.692724
+1.714890  1.784823  1.974907  2.085230  2.566670  2.701036
+1.729112  1.826059  1.895041  2.053724  2.603924  2.699244
+1.696294  1.791079  1.916038  2.017742  2.583106  2.704200
+1.626844  1.720989  1.890443  2.014482  2.589192  2.689135
+1.574181  1.677998  1.880801  1.982799  2.574984  2.664083
+1.432597  1.676378  1.834673  1.964658  2.535300  2.638654
+1.318535  1.535375  1.836957  1.932882  2.478408  2.578350
+1.226292  1.492951  1.836423  1.946067  2.430171  2.582074
+1.098912  1.499048  1.896293  2.028872  2.540535  2.618603
+1.034465  1.533372  1.964842  2.070966  2.578583  2.651519
+0.979835  1.480912  1.975960  2.089319  2.534240  2.632634
+0.916592  1.481293  1.967506  2.053292  2.558345  2.642742
+0.937338  1.474374  2.023762  2.110460  2.585438  2.665463
+0.873055  1.560533  2.028802  2.086416  2.575020  2.684778
+0.901938  1.628414  2.031806  2.102850  2.610158  2.685650
+0.862562  1.556144  1.997573  2.081742  2.533196  2.615757
+0.906140  1.665744  2.019373  2.133337  2.581928  2.661153
+0.872836  1.638660  2.038436  2.097283  2.645014  2.697786
+0.829264  1.441895  2.039191  2.111142  2.611659  2.688610
+0.825197  1.304534  2.056354  2.143792  2.590309  2.657819
+0.793520  1.521024  1.979438  2.058424  2.596225  2.668581
+0.849751  1.485532  1.986103  2.055458  2.624269  2.701899
+0.849936  1.385589  2.007518  2.060577  2.567229  2.678449
+0.829655  1.230975  1.988404  2.101475  2.530728  2.677331
+0.940677  1.264510  1.946316  2.046724  2.499806  2.677984
+1.038884  1.297487  1.958215  2.035997  2.406970  2.650323
+1.157909  1.247311  1.892511  1.984329  2.396990  2.663399
+1.237064  1.318827  1.843309  1.954773  2.420851  2.693910
+1.328871  1.403948  1.808685  1.946118  2.400888  2.683397
+1.393193  1.460812  1.822128  1.939601  2.242548  2.723232
+1.370957  1.526137  1.785367  1.963164  2.136749  2.644805
+1.501135  1.606768  1.841831  2.009462  2.198461  2.614649
+1.467944  1.551473  1.849852  1.982829  2.208604  2.514793
+1.405944  1.480977  1.855980  1.997060  2.178717  2.490007
+1.448170  1.520957  1.868813  1.975365  2.241031  2.616351
+1.380808  1.612670  1.869962  2.026788  2.443477  2.639977
+1.483716  1.596112  1.969733  2.100913  2.577431  2.688144
+1.467685  1.578222  1.986564  2.194709  2.570945  2.671094
+1.496302  1.614196  2.032020  2.218322  2.553463  2.681813
+1.596958  1.722731  2.144525  2.319980  2.604392  2.703958
+1.563283  1.830072  2.213128  2.432926  2.641108  2.721000
+1.591103  1.948477  2.288414  2.486581  2.666837  2.743573
+1.475707  1.718658  2.050982  2.217962  2.487280  2.571804
+1.558930  1.772302  2.094474  2.234464  2.518928  2.597737
+1.567586  1.822091  2.100593  2.286654  2.533948  2.648113
+1.750029  1.936668  2.135601  2.347638  2.546896  2.638316
+1.756882  1.998584  2.116800  2.223412  2.556559  2.647062
+1.700043  1.922262  2.075348  2.184374  2.556081  2.639062
+1.598667  1.709712  1.994558  2.098788  2.521397  2.628442
+1.609782  1.719799  1.937528  2.091978  2.547584  2.621070
+1.580745  1.686692  1.927934  2.059508  2.580331  2.643528
+1.541164  1.684662  1.944797  2.038248  2.568516  2.637104
+1.474497  1.633889  1.881331  1.988847  2.554704  2.623589
+1.427685  1.616808  1.898469  1.994121  2.545908  2.635844
+1.366974  1.583736  1.860760  2.018090  2.526247  2.594032
+1.257899  1.562399  1.870764  1.961750  2.512050  2.589589
+1.183313  1.571246  1.867445  1.988791  2.543767  2.607786
+1.137720  1.607193  1.879149  2.008769  2.536804  2.607481
+1.053818  1.511423  1.904439  2.002387  2.584849  2.657089
+1.029306  1.560669  1.913466  1.984439  2.613420  2.670916
+0.990299  1.520302  1.919708  2.005988  2.615870  2.705960
+0.927002  1.486845  1.900099  1.977768  2.614622  2.695757
+0.924166  1.500302  1.837270  1.915819  2.601787  2.702827
+0.901854  1.422756  1.898010  1.950141  2.572992  2.759299
+0.910623  1.286484  1.801282  1.925793  2.438152  2.671294
+0.904293  1.226137  1.873337  1.946907  2.485265  2.645532
+0.872654  1.122664  1.912497  2.047619  2.468062  2.645490
+1.136081  1.248013  1.725399  2.180627  2.493778  2.579400
+1.161500  1.346974  1.804044  2.157021  2.550312  2.633164
+1.287295  1.663717  2.044188  2.321923  2.599284  2.687129
+1.456799  1.758274  2.055266  2.310654  2.549315  2.660074
+1.416948  1.741370  2.104189  2.357764  2.591761  2.679543
+1.379535  1.752525  2.173415  2.361073  2.617497  2.699322
+1.361005  1.762025  2.115710  2.330663  2.562002  2.650389
+1.340777  1.685357  2.024889  2.281946  2.547415  2.639463
+1.278174  1.686145  1.961407  2.165468  2.554171  2.647873
+1.294524  1.547620  1.981967  2.183432  2.547510  2.637235
+1.201621  1.343641  2.007859  2.089427  2.535679  2.660742
+1.201995  1.332111  1.949153  2.051811  2.553202  2.665468
+1.180355  1.354250  1.890523  2.069912  2.515229  2.620120
+1.128725  1.419757  1.854779  2.056632  2.480702  2.583539
+1.133191  1.402342  1.822656  2.013606  2.539914  2.639438
+1.149266  1.376927  1.821187  1.914934  2.562423  2.664037
+1.080871  1.408443  1.788020  1.879929  2.517515  2.656681
+1.152439  1.509600  1.822338  1.939812  2.528944  2.619151
+1.227262  1.543782  1.935413  2.017678  2.575512  2.665626
+1.253647  1.485940  1.945543  1.987370  2.539186  2.715089
+1.224504  1.521337  1.982156  2.044940  2.522684  2.687446
+1.258716  1.476124  1.981858  2.073104  2.536174  2.634089
+1.255580  1.471131  1.983938  2.052555  2.541040  2.708650
+1.221419  1.556731  2.013319  2.089772  2.538596  2.706495
+1.178484  1.474650  2.007635  2.122088  2.560256  2.629434
+1.136643  1.459288  2.033733  2.100427  2.544702  2.689126
+1.035202  1.462561  2.024973  2.194093  2.530601  2.662208
+1.090875  1.522421  2.038442  2.129424  2.587618  2.687392
+1.054541  1.538340  2.000589  2.084015  2.516505  2.644331
+1.069567  1.471150  1.977006  2.102657  2.548224  2.645658
+1.084637  1.235068  1.999027  2.091007  2.405191  2.622410
+1.073907  1.180490  1.961383  2.101877  2.255303  2.531797
+1.185536  1.320277  2.006751  2.098846  2.443082  2.582972
+1.256811  1.419989  1.983529  2.130962  2.470417  2.558689
+1.290736  1.391916  1.995379  2.106560  2.351663  2.485168
+1.428569  1.748298  2.044813  2.277573  2.513087  2.625248
+1.495766  1.686660  2.135657  2.292230  2.499007  2.616505
+1.482459  1.632012  2.083877  2.297241  2.488552  2.605327
+1.538843  1.630868  2.111745  2.223107  2.576837  2.693238
+1.551627  1.628553  2.040601  2.158000  2.590177  2.713514
+1.570014  1.637722  1.958103  2.124258  2.570176  2.692788
+1.534589  1.607992  1.801643  2.087274  2.392697  2.600933
+1.502776  1.607625  1.843802  2.082344  2.323284  2.522392
+1.515698  1.613442  1.837842  2.027239  2.402910  2.602242
+1.510034  1.607577  1.826422  1.955465  2.340570  2.679619
+1.445827  1.566639  1.756421  1.869709  2.296147  2.601653
+1.410709  1.488515  1.820022  1.910438  2.358230  2.614654
+1.301575  1.428283  1.812427  1.902581  2.293360  2.725276
+1.106808  1.351509  1.888725  1.956330  2.320442  2.646886
+1.056263  1.366917  1.866615  1.968949  2.421463  2.653524
+1.148746  1.368055  1.809637  2.064105  2.437788  2.604096
+0.990270  1.453159  1.887277  2.035172  2.296937  2.600298
+0.943695  1.204266  1.748001  1.886445  2.181614  2.509804
+1.057049  1.221402  1.835972  1.972438  2.154951  2.492969
+0.936404  1.225524  1.895053  1.998065  2.539531  2.644930
+0.941516  1.224493  1.966408  2.055267  2.515087  2.609082
+1.000240  1.314972  1.942001  2.051921  2.535877  2.634783
+1.031394  1.407401  1.953467  2.045443  2.550815  2.634369
+1.118870  1.441951  1.952517  2.061995  2.494339  2.608036
+1.197103  1.553158  1.887646  2.009186  2.472098  2.550658
+1.293802  1.588339  1.868376  2.045916  2.481096  2.566107
+1.353770  1.610646  1.897619  2.083477  2.408292  2.543397
+1.403681  1.521997  1.891672  2.054144  2.357288  2.512253
+1.370402  1.446254  1.871326  1.998144  2.336676  2.570693
+1.499387  1.755248  2.090328  2.282953  2.484033  2.574394
+1.567708  1.842611  2.136623  2.278726  2.477117  2.576067
+1.591554  1.767544  2.169415  2.302935  2.525126  2.637496
+1.458272  1.799744  2.227216  2.397500  2.616529  2.705570
+1.496705  1.846042  2.279896  2.437186  2.649673  2.726623
+1.502759  1.731322  2.268727  2.464213  2.623623  2.706745
+1.497299  1.617932  2.156580  2.386255  2.579030  2.664716
+1.379977  1.538687  1.850634  2.109517  2.410662  2.586146
+1.405875  1.497926  1.741705  1.932278  2.337183  2.563846
+1.346170  1.431041  1.657425  1.884420  2.373948  2.587354
+1.307909  1.406366  1.734141  1.875825  2.460720  2.602094
+1.273940  1.571154  1.771276  1.912248  2.536452  2.595610
+1.200061  1.575178  1.770854  1.877630  2.508016  2.579146
+1.125813  1.539421  1.722626  1.859971  2.511653  2.574626
+1.064900  1.484512  1.690862  1.832750  2.519579  2.589278
+1.042869  1.483231  1.627118  1.867084  2.495867  2.550264
+0.950910  1.474823  1.576110  1.830086  2.519438  2.569906
+1.004516  1.423026  1.550120  1.835220  2.473605  2.544366
+1.026409  1.365688  1.510656  1.879110  2.467179  2.543867
+0.978321  1.338491  1.528018  1.913878  2.465066  2.524725
+0.922555  1.409585  1.520258  1.932657  2.404714  2.472216
+1.009019  1.345028  1.518729  1.999531  2.463064  2.544939
+0.989351  1.433164  1.573872  2.015438  2.401202  2.490979
+1.035325  1.556325  1.677312  2.086779  2.481518  2.567949
+1.004119  1.575292  1.796393  2.075521  2.402912  2.574238
+1.037355  1.681818  1.943106  2.065425  2.478887  2.598899
+1.005855  1.684746  1.972392  2.109307  2.565052  2.623513
+0.954873  1.719791  2.006188  2.112346  2.598630  2.682782
+0.937994  1.728321  1.993763  2.105254  2.632050  2.700706
+0.889626  1.709530  2.001291  2.090092  2.620540  2.709802
+0.912128  1.657624  1.966778  2.058636  2.626429  2.702918
+0.972006  1.569116  1.985953  2.130241  2.569149  2.677258
+1.038791  1.651170  2.008290  2.118109  2.599188  2.701292
+1.102203  1.624993  1.998759  2.125031  2.569760  2.646643
+1.187738  1.639367  2.059243  2.147304  2.475862  2.634964
+1.274099  1.590670  2.016754  2.099633  2.548725  2.668989
+1.373403  1.630011  1.981494  2.070929  2.505950  2.689328
+1.511208  1.602606  1.911343  2.022899  2.475945  2.645751
+1.553078  1.639398  1.870403  1.975613  2.473431  2.626572
+1.633420  1.773325  1.875127  1.959482  2.413151  2.625912
+1.596719  1.747314  1.878046  2.049018  2.587489  2.669276
+1.664674  1.933354  2.156044  2.280025  2.462736  2.571555
+1.551190  1.695801  2.047099  2.236977  2.447592  2.570843
+1.648304  1.728067  2.060789  2.273739  2.475137  2.631203
+1.633548  1.757572  2.089279  2.240980  2.436119  2.556847
+1.608644  1.684711  2.123747  2.256566  2.486503  2.598234
+1.653176  1.714541  2.105354  2.203230  2.509317  2.641781
+1.541046  1.679960  2.104266  2.247262  2.540379  2.626724
+1.559664  1.659637  2.101376  2.213674  2.473238  2.562999
+1.608810  1.671776  2.071434  2.184829  2.493283  2.639463
+1.538876  1.610189  2.083083  2.171544  2.554389  2.650993
+1.511021  1.595459  2.031637  2.130089  2.587598  2.660399
+1.340693  1.587842  1.931002  2.117119  2.599860  2.676574
+1.484682  1.533251  2.024488  2.113154  2.548321  2.659954
+1.534337  1.608310  2.031541  2.136001  2.537102  2.617716
+1.571577  1.618314  2.056726  2.139748  2.525414  2.622206
+1.564471  1.631266  2.060592  2.166039  2.469995  2.635657
+1.533650  1.663515  2.093962  2.190787  2.406743  2.622754
+1.570124  1.631042  2.049374  2.165169  2.393566  2.588498
+1.552473  1.634522  2.008478  2.098878  2.509195  2.669322
+1.498536  1.602806  2.008880  2.099726  2.525137  2.659175
+1.450925  1.660536  1.991759  2.103304  2.544073  2.696474
+1.447598  1.569099  1.993051  2.079756  2.587712  2.676395
+1.394567  1.544697  2.006663  2.078973  2.579015  2.721882
+1.347921  1.507746  1.993785  2.077331  2.510234  2.682685
+1.265189  1.355385  1.877848  2.063826  2.425800  2.657797
+1.266300  1.376932  2.008877  2.275008  2.479039  2.636159
+1.414729  1.680622  2.057398  2.332754  2.549975  2.652454
+1.499883  1.708789  2.054742  2.313580  2.521026  2.613915
+1.445680  1.741768  2.126388  2.338809  2.495118  2.597970
+1.459203  1.792340  2.113493  2.346074  2.563702  2.664973
+1.416845  1.644394  2.131474  2.322905  2.578800  2.677164
+1.447967  1.708221  2.144894  2.272584  2.593212  2.700869
+1.474608  1.742978  2.066944  2.341635  2.601749  2.685249
+1.346721  1.653940  1.999147  2.218537  2.633365  2.723602
+1.375208  1.551414  2.052682  2.232013  2.586844  2.697029
+1.260950  1.501751  1.925196  2.033937  2.546694  2.652031
+1.259339  1.500189  1.909647  1.982913  2.545881  2.638673
+1.252838  1.563842  1.910593  1.973683  2.579307  2.664280
+1.263002  1.546326  1.878080  2.031152  2.583468  2.653793
+1.265196  1.521273  1.905708  1.967385  2.581430  2.658715
+1.307704  1.547718  1.881421  1.962040  2.573475  2.658828
+1.291340  1.575015  1.915239  1.985560  2.602082  2.697699
+1.295431  1.626460  1.923299  2.023724  2.591291  2.680142
+1.301210  1.624080  1.878934  1.998083  2.560098  2.634506
+1.305813  1.620922  1.888028  1.989036  2.606227  2.669425
+1.308088  1.642328  1.885958  2.013573  2.611911  2.696648
+1.312101  1.627858  1.861841  1.974096  2.602616  2.658487
+1.292897  1.605725  1.877131  1.973395  2.599643  2.682844
+1.273139  1.591736  1.870416  1.947454  2.602328  2.674146
+1.283582  1.620817  1.847273  1.928033  2.590051  2.636876
+1.246205  1.560066  1.851625  1.954533  2.587535  2.673542
+1.260393  1.539639  1.831617  1.928432  2.552288  2.629629
+1.261220  1.505229  1.857309  1.933908  2.569004  2.696314
+1.283108  1.719865  1.823903  1.976026  2.565436  2.628748
+1.314387  1.617735  1.804065  1.960535  2.596814  2.686738
+1.338699  1.637284  1.896932  2.009128  2.523466  2.637375
+1.336475  1.577029  1.850025  1.943237  2.521339  2.596832
+1.398912  1.549275  1.724463  1.861933  2.166791  2.466332
+1.406894  1.497435  1.805042  1.909122  2.284281  2.542582
+1.474849  1.579373  1.970765  2.079699  2.371434  2.542616
+1.452309  1.539401  2.076665  2.137999  2.442972  2.649515
+1.450617  1.506612  2.036385  2.131452  2.484829  2.674720
+1.434796  1.583083  2.027674  2.136807  2.429113  2.578344
+1.087572  1.367208  1.786303  2.025035  2.298079  2.515673
+0.992092  1.436432  1.725512  1.965111  2.425717  2.549021
+0.969474  1.497321  1.730092  2.016045  2.414373  2.633316
+0.936277  1.413012  1.683609  2.029768  2.443096  2.552830
+1.176352  1.559638  1.748772  2.061891  2.311483  2.434690
+1.067106  1.406642  1.643885  1.978806  2.374725  2.547845
+0.989262  1.333111  1.475085  1.728650  2.492018  2.553467
+0.957471  1.308545  1.424561  1.823472  2.490215  2.552316
+1.035765  1.254486  1.352081  1.786247  2.539488  2.585779
+1.023678  1.232418  1.398476  1.875768  2.451677  2.540251
+1.037249  1.247286  1.387422  2.008554  2.419268  2.496115
+1.045924  1.231687  1.361952  1.887611  2.384450  2.471500
+1.000981  1.250837  1.376662  1.767666  2.398053  2.484439
+1.061773  1.214611  1.410756  1.728252  2.423979  2.514269
+1.168228  1.291194  1.597509  1.900015  2.415419  2.555014
+1.150788  1.412860  1.825953  1.953264  2.400052  2.535324
+1.166923  1.517635  1.943529  2.034246  2.373359  2.521470
+1.183183  1.523161  1.995315  2.119892  2.433461  2.591155
+1.159482  1.521728  2.072369  2.176962  2.514904  2.660759
+1.260320  1.722656  2.116773  2.249048  2.534123  2.645628
+1.450433  1.717713  2.048790  2.212752  2.499485  2.636128
+1.449227  1.653123  2.023641  2.196888  2.453054  2.612516
+1.388122  1.597569  1.968649  2.163453  2.425431  2.578033
+1.347603  1.449808  1.894138  2.168973  2.446471  2.602268
+1.398006  1.471755  1.922063  2.120957  2.396434  2.600718
+1.428663  1.541308  2.046052  2.132513  2.397088  2.643104
+1.492673  1.585159  2.059339  2.158303  2.480824  2.648749
+1.558991  1.648786  2.037511  2.153321  2.512380  2.647660
+1.587505  1.659085  2.020500  2.139692  2.537458  2.616564
+1.634348  1.739360  2.044485  2.218194  2.530130  2.622735
+1.650152  1.736774  2.049269  2.148919  2.551868  2.651288
+1.640705  1.707347  1.991329  2.119563  2.587595  2.642835
+1.655822  1.709750  1.941946  2.090791  2.570081  2.630366
+1.606441  1.695623  1.852762  2.047845  2.554897  2.628090
+1.484591  1.657033  1.822979  2.008956  2.584027  2.653723
+1.348381  1.627797  1.779073  1.897327  2.521867  2.646403
+1.155644  1.464872  1.763798  1.943553  2.555854  2.642088
+1.339453  1.676328  1.971041  2.186803  2.438887  2.571072
+1.297378  1.615525  1.946759  2.151180  2.429841  2.558129
+1.136457  1.519887  1.867226  2.107387  2.452727  2.553710
+0.943433  1.350976  1.714327  1.830884  2.380038  2.573606
+0.933950  1.078579  1.553087  1.662344  2.027950  2.453145
+0.896937  1.246931  1.586629  1.684078  2.397137  2.611707
+0.892078  1.350059  1.560075  1.689846  2.506278  2.607560
+0.772181  1.313675  1.525659  1.650282  2.468977  2.636413
+0.863603  1.328577  1.481135  1.768890  2.496778  2.546566
+0.908312  1.258415  1.382771  1.699751  2.448589  2.547326
+0.863083  1.273798  1.422414  1.575877  2.509924  2.567103
+0.798143  1.233378  1.328045  1.718547  2.545479  2.654885
+0.937997  1.297209  1.447389  1.659450  2.539430  2.664368
+1.015311  1.282646  1.449652  1.656931  2.519587  2.597241
+1.012603  1.308086  1.428756  1.742642  2.581377  2.654752
+1.075222  1.359942  1.466363  1.790456  2.582927  2.654917
+1.174719  1.354592  1.470683  1.808114  2.611814  2.690601
+1.304671  1.380565  1.486415  1.863253  2.499088  2.646637
+1.329253  1.458935  1.599739  1.985102  2.412241  2.489601
+1.326849  1.466962  1.650712  1.972882  2.173652  2.363777
+1.440729  1.597862  1.756923  1.942121  2.134420  2.330899
+1.490912  1.615283  1.799725  1.989183  2.307191  2.535959
+1.523001  1.676436  1.841390  2.084493  2.490067  2.619504
+1.536446  1.672927  1.834339  2.067942  2.594848  2.655730
+1.585206  1.673419  1.879347  2.026137  2.609162  2.691334
+1.576452  1.662112  1.868110  1.987273  2.629831  2.702492
+1.561137  1.629084  1.910414  2.005430  2.633437  2.726135
+1.531209  1.615548  1.873644  1.966279  2.522587  2.706064
+1.473294  1.591222  1.908945  1.973407  2.535042  2.733124
+1.412536  1.473645  1.871722  1.957323  2.341205  2.740704
+1.379808  1.473241  1.923919  1.986068  2.447172  2.657583
+1.333691  1.500115  1.933534  2.138032  2.501795  2.615830
+1.405765  1.570091  2.028114  2.332669  2.573681  2.664117
+1.386052  1.546746  2.101843  2.380119  2.607300  2.712463
+1.420552  1.664080  2.096840  2.287671  2.545433  2.645671
+1.429919  1.632895  2.056448  2.245342  2.469727  2.594625
+1.450338  1.542326  1.936139  2.160089  2.389658  2.594948
+1.458650  1.545840  1.973946  2.132840  2.280546  2.519107
+1.499624  1.621854  1.924363  2.086584  2.253820  2.393464
+1.480124  1.596614  1.822901  2.030079  2.212455  2.440593
+1.385572  1.515794  1.763525  2.007562  2.207014  2.505163
+1.363477  1.483710  1.745394  2.020826  2.177380  2.428417
+1.422412  1.526361  1.802470  2.041367  2.267629  2.509983
+1.451781  1.539504  1.888618  2.079745  2.258528  2.500819
+1.462745  1.548876  1.925748  2.065292  2.320100  2.591877
+1.459612  1.526791  1.937299  2.029745  2.425999  2.618215
+1.426774  1.495962  1.934803  2.028683  2.474317  2.639936
+1.395478  1.494605  1.923542  2.006865  2.508795  2.651596
+1.315323  1.475877  1.925867  2.012444  2.562544  2.642674
+1.216208  1.542312  1.867609  1.962911  2.578507  2.638914
+1.188119  1.592111  1.826165  1.956758  2.592728  2.659305
+1.157283  1.519027  1.841285  1.936129  2.596722  2.669387
+1.042732  1.334857  1.852810  1.927812  2.509256  2.721390
+1.076921  1.512728  1.892211  1.976017  2.370736  2.635640
+1.328644  1.555209  1.826957  2.080018  2.447934  2.607755
+1.271225  1.383527  1.740551  2.048721  2.356257  2.567108
+1.288765  1.385478  1.793872  1.977849  2.390396  2.604554
+1.328655  1.422241  1.805644  2.002822  2.289156  2.544301
+1.377945  1.493655  1.793682  2.031868  2.353733  2.518906
+1.384430  1.453654  1.838071  2.001840  2.390785  2.635123
+1.289457  1.403427  1.871018  1.986122  2.479981  2.723796
+1.207888  1.388220  1.865052  2.031661  2.450066  2.591415
+1.218628  1.309314  1.909852  2.003782  2.499425  2.604984
+1.178831  1.273297  1.832814  2.025041  2.508629  2.650229
+1.147475  1.259195  1.930161  2.027735  2.522075  2.634075
+1.100906  1.268026  1.857908  1.951898  2.508895  2.660387
+1.069825  1.225671  1.888950  1.974341  2.492132  2.592105
+1.042255  1.182210  1.891740  2.039958  2.559652  2.679327
+0.956414  1.180966  1.881463  1.994332  2.316474  2.617691
+1.061791  1.571696  1.926569  2.107177  2.404155  2.525452
+1.374312  1.475896  1.678426  1.972424  2.364289  2.516531
+1.363442  1.455771  1.763156  1.970798  2.368334  2.586977
+1.423043  1.591891  1.798197  2.012780  2.388112  2.602184
+1.527265  1.605781  1.909513  2.033429  2.406683  2.593463
+1.585135  1.664508  1.918013  2.026537  2.425727  2.600924
+1.611888  1.728561  1.907667  2.034036  2.395680  2.641770
+1.463013  1.624657  1.872286  1.998243  2.487821  2.662465
+1.507075  1.597912  1.893748  1.997011  2.535979  2.672459
+1.502401  1.618027  1.888560  2.024162  2.581852  2.656536
+1.553117  1.639479  1.918920  2.034284  2.576859  2.655677
+1.577358  1.648261  1.958093  2.053413  2.567886  2.656516
+1.595375  1.654628  1.997767  2.099746  2.531642  2.675206
+1.621639  1.704007  1.957750  2.074637  2.584314  2.660506
+1.618433  1.711386  1.954786  2.067454  2.533767  2.695229
+1.617851  1.716314  1.949677  2.103360  2.635944  2.686892
+1.649322  1.746309  1.901606  2.064352  2.606774  2.690238
+1.635059  1.769603  1.904617  2.019099  2.607597  2.713325
+1.645565  1.779500  1.868948  1.965332  2.592154  2.714895
+1.686573  1.757504  1.858066  1.922036  2.505271  2.698890
+1.612716  1.703234  1.831053  1.925901  2.373806  2.613684
+1.244351  1.409563  1.713462  1.967702  2.351463  2.537356
+1.269988  1.387301  1.640967  1.991832  2.324911  2.501768
+1.305349  1.455772  1.788777  2.091229  2.487237  2.614726
+1.413862  1.518807  1.888520  2.252275  2.448086  2.594722
+1.409418  1.591460  1.944717  2.196924  2.518393  2.638233
+1.399142  1.703314  1.966146  2.224863  2.616908  2.734082
+1.375311  1.636377  2.061764  2.292420  2.586624  2.705744
+1.394667  1.733415  2.073598  2.297154  2.573824  2.672888
+1.366082  1.738611  2.016634  2.285662  2.605490  2.693517
+1.360620  1.601685  1.967966  2.194839  2.564848  2.657918
+1.354700  1.471541  1.990171  2.165439  2.569000  2.679116
+1.319372  1.403922  2.030220  2.115007  2.452702  2.635911
+1.303257  1.374731  1.975040  2.111171  2.369818  2.660606
+1.325790  1.431051  2.036171  2.113943  2.475995  2.685073
+1.307478  1.510363  2.117703  2.179166  2.554579  2.695776
+1.311427  1.548305  2.128351  2.279725  2.551702  2.645499
+1.293775  1.442228  2.115561  2.289555  2.415905  2.531210
+1.278672  1.697114  2.092498  2.199540  2.368518  2.561138
+1.292641  1.867932  2.128826  2.206329  2.450839  2.551778
+1.234857  1.631071  2.143705  2.304460  2.491014  2.565728
+1.219953  1.367565  2.149802  2.218488  2.495215  2.635299
+1.208902  1.484837  2.180300  2.276690  2.526332  2.626732
+1.165264  1.458241  2.155590  2.227283  2.490182  2.596799
+1.116188  1.492178  2.177271  2.241905  2.532331  2.620529
+1.096897  1.524925  2.093489  2.345253  2.480356  2.611159
+1.043785  1.369028  2.229277  2.306648  2.527431  2.613026
+1.080719  1.336126  2.135541  2.240613  2.463443  2.634282
+1.126263  1.502538  2.065329  2.274832  2.512833  2.588250
+1.199125  1.448000  2.040575  2.216856  2.449127  2.544297
+1.244303  1.540831  2.036533  2.174834  2.470267  2.580345
+1.277190  1.574057  2.066371  2.150365  2.508540  2.611728
+1.341754  1.576876  2.031475  2.120651  2.496164  2.575343
+1.335444  1.541598  1.994337  2.108804  2.518844  2.622948
+1.351719  1.543708  2.003315  2.075354  2.579158  2.656631
+1.359299  1.470533  1.968461  2.042323  2.565151  2.664841
+1.368199  1.433218  1.983774  2.044947  2.438603  2.670598
+1.351177  1.426131  1.991290  2.087726  2.430748  2.616370
+1.349866  1.483300  2.000270  2.242826  2.535909  2.629047
+1.322061  1.596777  2.113123  2.408146  2.548980  2.625263
+1.381288  1.648758  2.192458  2.378361  2.579516  2.654496
+1.372134  1.542663  2.062546  2.307310  2.475587  2.580621
+1.363570  1.463481  1.864764  2.288459  2.467800  2.571685
+1.335793  1.536300  1.886159  2.221871  2.543381  2.670529
+1.259757  1.393352  1.604761  1.934288  2.430512  2.509599
+1.224722  1.349648  1.481936  1.836832  2.384963  2.463134
+1.253661  1.369206  1.505507  1.994342  2.366061  2.454562
+1.250448  1.372217  1.563439  2.133283  2.391531  2.461107
+1.298984  1.412532  1.560005  2.162846  2.475577  2.551467
+1.308701  1.487231  1.616571  2.140891  2.422519  2.527844
+1.362265  1.509740  1.691137  2.151850  2.425060  2.504008
+1.415186  1.573817  1.726343  2.145690  2.423615  2.518947
+1.468304  1.624569  1.768003  2.107079  2.433687  2.501879
+1.474213  1.645172  1.829377  2.150471  2.330539  2.454132
+1.488731  1.662220  1.853177  2.160434  2.390722  2.507469
+1.515371  1.685102  1.820897  2.090815  2.477135  2.541320
+1.533941  1.681022  1.911151  2.101052  2.431211  2.507421
+1.547022  1.762747  1.905315  2.057302  2.369967  2.496458
+1.524747  1.707503  1.880853  2.145136  2.331290  2.443298
+1.532670  1.689464  1.838440  2.066707  2.352074  2.487585
+1.449082  1.639914  1.786524  2.047043  2.328788  2.426218
+1.393415  1.607003  1.752128  2.065963  2.381000  2.473775
+1.234921  1.620384  1.751709  2.079353  2.400969  2.471820
+1.128649  1.589193  1.725978  2.097814  2.421776  2.507176
+1.205122  1.491109  1.707033  2.143134  2.407676  2.489596
+1.105985  1.524092  1.740260  2.142524  2.422755  2.532710
+1.146867  1.428089  1.698792  2.100330  2.423332  2.545496
+1.116015  1.351902  1.754307  2.146023  2.411698  2.527537
+1.178509  1.306840  1.824109  2.272040  2.452886  2.546314
+1.386046  1.686532  2.010818  2.148686  2.439205  2.570934
+1.334381  1.674050  1.962490  2.108725  2.403922  2.587496
+1.309542  1.519433  2.030598  2.119732  2.436082  2.620801
+1.199624  1.425192  2.037889  2.161327  2.493314  2.639529
+0.913804  1.251727  2.055079  2.176873  2.416854  2.644928
+0.822137  1.067331  2.019119  2.216592  2.395557  2.658189
+0.859923  0.985874  1.904285  2.160589  2.433708  2.639822
+0.906761  1.140617  2.010505  2.146239  2.469640  2.644134
+0.950845  1.253958  2.039526  2.095898  2.600275  2.711094
+0.953879  1.245319  1.985465  2.133152  2.543655  2.613003
+1.031672  1.286594  1.974619  2.037126  2.541018  2.690276
+1.051598  1.373163  1.905246  2.009638  2.495552  2.674053
+1.088262  1.297396  1.898694  2.018578  2.508840  2.690510
+1.146698  1.282269  1.930714  2.010155  2.439408  2.647009
+1.157205  1.343846  1.930823  2.029125  2.368152  2.598000
+1.247348  1.432742  1.942594  2.067451  2.392833  2.554304
+1.297617  1.516021  1.993391  2.079273  2.439458  2.548273
+1.386254  1.483598  1.965854  2.071612  2.444793  2.594366
+1.429692  1.499865  1.880633  2.074107  2.346203  2.604251
+1.569133  1.644482  1.942763  2.045196  2.370694  2.589367
+1.696361  1.745617  1.980943  2.093662  2.433481  2.583667
+1.694840  1.801151  1.961027  2.068322  2.452636  2.638290
+1.619793  1.785586  1.919626  2.055816  2.238163  2.498763
+1.223689  1.621225  1.791717  1.898693  2.161669  2.499947
+1.144413  1.452915  1.780893  1.866745  2.214208  2.494268
+1.135538  1.495124  1.820776  1.894356  2.115005  2.441578
+1.131378  1.535817  1.737318  1.842419  2.021638  2.425946
+1.212645  1.312165  1.752907  1.889323  2.108905  2.469701
+1.253951  1.352407  1.652652  1.960954  2.394436  2.568676
+1.362676  1.580790  1.913319  2.212617  2.381597  2.528987
+1.417331  1.582049  1.977630  2.237995  2.413078  2.580292
+1.383161  1.603552  2.016139  2.210126  2.449048  2.587234
+1.442111  1.544212  1.938946  2.141876  2.494998  2.590164
+1.381730  1.579156  1.982000  2.138775  2.485780  2.620572
+1.361593  1.597812  1.964935  2.138121  2.542610  2.622470
+1.360664  1.614689  2.010781  2.161500  2.460448  2.583897
+1.390092  1.628646  1.963826  2.130557  2.477732  2.613382
+1.346169  1.648499  2.082367  2.321708  2.555952  2.649424
+1.440422  1.742439  2.007648  2.208244  2.450993  2.577906
+1.444825  1.695062  2.026868  2.210477  2.414028  2.532766
+1.345541  1.589166  1.955423  2.129306  2.409889  2.543165
+1.400043  1.481922  1.947067  2.110259  2.313164  2.531167
+1.384776  1.484787  1.983872  2.107142  2.360088  2.585480
+1.429185  1.514936  2.019660  2.137662  2.329551  2.585292
+1.450546  1.518321  2.010034  2.102797  2.401692  2.603278
+1.441363  1.525406  1.964971  2.076719  2.376014  2.594808
+1.464787  1.521553  1.968987  2.077867  2.444963  2.621082
+1.486696  1.573684  2.001845  2.108515  2.433771  2.626158
+1.471032  1.543603  1.991659  2.111714  2.473307  2.645459
+1.415271  1.524488  2.012703  2.095751  2.458820  2.642016
+1.407514  1.501486  2.050311  2.156204  2.480187  2.623271
+1.376118  1.459583  2.009938  2.169415  2.480196  2.642689
+1.345946  1.472883  2.073124  2.184863  2.486126  2.610362
+1.306365  1.438379  2.090496  2.213143  2.554203  2.683954
+1.219262  1.423037  2.090917  2.170494  2.559623  2.668211
+1.180469  1.408080  1.935170  2.088177  2.548134  2.639438
+1.209541  1.528929  1.887266  1.961882  2.483440  2.649342
+1.219923  1.521384  1.939175  1.988023  2.460034  2.673476
+1.198754  1.474098  1.859112  1.981042  2.395346  2.719202
+1.118408  1.504845  1.897944  2.002376  2.242870  2.598523
+1.018525  1.459894  1.746590  2.051954  2.324856  2.458848
+0.866990  1.387782  1.654105  1.799741  2.325792  2.407380
+0.862252  1.365828  1.705762  1.802245  2.416352  2.493849
+0.928394  1.546454  1.716680  1.877069  2.379724  2.524594
+1.083354  1.487338  1.801149  2.005692  2.321736  2.558733
+1.057425  1.339797  1.834422  1.934601  2.279625  2.530701
+0.954787  1.140996  1.792870  1.891796  2.342908  2.492038
+0.996853  1.130036  1.792153  1.895409  2.236238  2.403350
+0.920268  1.069492  1.874858  2.072086  2.335228  2.486570
+0.954214  1.081065  1.827324  2.079149  2.238820  2.508120
+0.894487  1.013841  1.716536  2.018446  2.175347  2.482241
+0.842005  0.979634  1.644526  1.945897  2.271025  2.438632
+0.955710  1.090003  1.754054  1.967070  2.127836  2.448885
+0.954385  1.094473  1.727553  2.005579  2.266567  2.514397
+1.025620  1.137605  1.787527  2.002076  2.336896  2.511839
+1.013813  1.175105  1.881936  2.016643  2.345862  2.445716
+1.082667  1.227297  1.923243  2.022783  2.402376  2.520967
+1.118115  1.224136  1.824448  1.961745  2.245832  2.515829
+1.146448  1.298991  1.872929  1.995465  2.371727  2.526896
+1.188552  1.310653  1.902213  1.996780  2.290374  2.520538
+1.309924  1.416529  1.878448  2.050089  2.224176  2.387793
+1.394764  1.506270  1.934888  2.056817  2.271193  2.453341
+1.377933  1.572642  1.990697  2.083570  2.381595  2.606523
+1.444019  1.689297  1.997464  2.153207  2.361127  2.507701
+1.515035  1.642770  1.929088  2.159339  2.335507  2.497838
+1.540079  1.708314  1.883825  2.094981  2.398624  2.570098
+1.600911  1.698511  1.881481  2.085171  2.451013  2.653738
+1.502633  1.756061  2.040722  2.163397  2.376168  2.548669
+1.532107  1.855341  1.993840  2.139554  2.302488  2.430987
+1.484859  1.822055  1.964302  2.135961  2.337023  2.472337
+1.536688  1.766917  1.951249  2.090524  2.324175  2.529206
+1.582282  1.723852  1.912068  2.069366  2.302944  2.473896
+1.499712  1.593288  1.912697  2.034098  2.366553  2.553790
+1.434200  1.540709  1.867569  1.989167  2.323715  2.539399
+1.189101  1.500824  1.763417  1.976198  2.137279  2.441179
+1.165922  1.470178  1.772997  1.927098  2.088007  2.304301
+1.250154  1.600421  1.818068  1.922113  2.080252  2.241814
+1.122694  1.628796  1.814409  1.932949  2.099304  2.418672
+1.019615  1.510656  1.850726  1.995621  2.130205  2.457063
+0.958176  1.639680  1.840433  1.956534  2.104283  2.279028
+1.010543  1.537512  1.772221  1.930517  2.101622  2.248506
+0.904371  1.505016  1.664330  1.827875  2.278031  2.348418
+1.067733  1.454537  1.686858  1.803459  2.384372  2.499789
+1.262873  1.516004  1.882748  1.975559  2.353571  2.519731
+1.560637  1.698959  1.921539  2.000060  2.540292  2.605234
+1.665625  1.744091  1.995924  2.104003  2.538942  2.620162
+1.615168  1.748503  2.024112  2.126056  2.408165  2.614133
+1.678025  1.752954  2.027903  2.146564  2.382374  2.568508
+1.580352  1.680273  1.997415  2.122458  2.459846  2.587827
+1.590082  1.692050  1.934784  2.095757  2.552980  2.625876
+1.539000  1.620243  1.920765  2.031604  2.481670  2.592695
+1.408796  1.511786  1.744250  1.896588  2.412019  2.515579
+1.320558  1.487993  1.754964  1.896907  2.437159  2.563184
+1.174869  1.524851  1.708181  1.962955  2.513779  2.581010
+1.287639  1.559567  1.903084  2.105175  2.450979  2.599458
+1.224033  1.507999  1.922793  2.076370  2.372907  2.581210
+1.163218  1.444961  1.734673  2.020179  2.322152  2.541566
+1.212255  1.448003  1.638494  2.031919  2.229345  2.399467
+1.108889  1.283327  1.481151  1.907068  2.100013  2.293484
+1.155218  1.290372  1.476717  1.688065  2.089220  2.181765
+1.171472  1.290390  1.556515  1.825992  2.018143  2.243494
+1.149886  1.282652  1.601900  1.745296  2.110780  2.409060
+1.223914  1.360718  1.650069  1.792936  2.265100  2.370934
+1.254374  1.404539  1.706674  1.854649  2.276473  2.394690
+1.225833  1.442107  1.766130  1.924123  2.292396  2.394677
+1.211141  1.461886  1.804549  1.927018  2.361986  2.453285
+1.218638  1.405782  1.809530  1.914204  2.318449  2.520048
+1.222942  1.394674  1.840107  1.932398  2.391674  2.503193
+1.206898  1.372866  1.842954  1.943799  2.424465  2.578763
+1.246306  1.423826  1.866209  1.962415  2.436055  2.595659
+1.270919  1.455901  1.888055  1.976335  2.469281  2.582811
+1.198265  1.323940  1.880236  1.949408  2.471659  2.644805
+1.174323  1.293200  1.765612  2.019282  2.282243  2.576238
+1.141730  1.383190  1.882826  2.126532  2.453044  2.611191
+1.483342  1.650728  2.043593  2.193798  2.517271  2.622915
+1.446069  1.621898  1.999609  2.103532  2.493478  2.581923
+1.414671  1.630237  1.945678  2.061773  2.500655  2.588950
+1.438432  1.615586  1.903350  2.013028  2.426105  2.613642
+1.556674  1.623119  1.875461  1.972308  2.366695  2.629218
+1.466504  1.638319  1.796576  1.959267  2.457617  2.603231
+1.308284  1.481394  1.730539  1.979266  2.332265  2.538090
+1.301646  1.413738  1.674441  1.933375  2.143487  2.508142
+1.318907  1.416559  1.751644  1.913438  2.294089  2.555125
+1.324509  1.425623  1.844923  1.947411  2.375384  2.597366
+1.266998  1.359728  1.849155  1.950839  2.370723  2.579301
+1.162697  1.344305  1.906935  1.986568  2.470580  2.583422
+1.115998  1.365829  1.948029  2.040077  2.461135  2.583597
+1.061798  1.350291  2.006280  2.080459  2.451632  2.526961
+1.024331  1.233571  1.989411  2.085049  2.387181  2.495816
+0.962287  1.219238  1.967000  2.089191  2.424659  2.599861
+0.881533  1.356828  2.047429  2.155394  2.409074  2.508754
+0.856010  1.217716  2.008528  2.111528  2.424806  2.537738
+0.774065  0.965055  1.874139  2.035878  2.251024  2.527966
+0.820344  0.990331  1.960958  2.242123  2.349553  2.535465
+0.846158  1.062894  1.972506  2.169152  2.353165  2.556086
+0.748812  1.063441  1.949952  2.066846  2.364509  2.602003
+0.855725  1.158383  2.008420  2.144140  2.328495  2.600481
+0.862076  1.188230  1.906456  2.191351  2.368506  2.542645
+0.814218  1.194007  2.086397  2.156864  2.482953  2.574777
+0.811087  1.320952  2.038259  2.112835  2.508878  2.598939
+0.967874  1.191718  2.049318  2.146525  2.422668  2.566778
+1.008026  1.234198  2.040908  2.121036  2.480150  2.609085
+1.118175  1.312265  1.961423  2.071245  2.409323  2.600531
+1.189338  1.302425  1.961961  2.063211  2.432115  2.545303
+1.253885  1.371226  1.931879  2.030140  2.387565  2.558949
+1.307301  1.398036  1.910989  2.006938  2.409438  2.577142
+1.330085  1.468465  1.908521  2.012222  2.418015  2.537683
+1.367992  1.492291  1.942021  2.036750  2.498866  2.581003
+1.368367  1.443433  1.947482  2.013180  2.486344  2.585241
+1.418284  1.496850  1.933442  2.024630  2.473682  2.594036
+1.443886  1.551220  1.904909  2.018103  2.456717  2.542868
+1.473689  1.587097  1.899829  2.079006  2.421501  2.584477
+1.424674  1.611334  1.974517  2.142720  2.402882  2.620760
+1.431487  1.622660  1.940232  2.125436  2.429652  2.581851
+1.484538  1.690581  1.921860  2.109101  2.474401  2.607828
+1.498136  1.751579  1.925730  2.039135  2.440519  2.616180
+1.505248  1.789182  1.994666  2.114126  2.408417  2.599889
+1.609869  1.793035  1.986226  2.160600  2.519572  2.593245
+1.562825  1.739913  1.974184  2.143221  2.539588  2.620088
+1.650259  1.723964  2.002949  2.150399  2.532100  2.600746
+1.584628  1.665482  1.833853  1.979658  2.511168  2.576182
+1.547562  1.665631  1.805111  1.930451  2.428670  2.548606
+1.499078  1.595123  1.700269  1.824190  2.376924  2.575480
+1.300837  1.552954  1.664576  1.791707  2.488304  2.561078
+1.168605  1.311953  1.668583  1.872905  2.413570  2.493285
+1.047458  1.249963  1.699886  1.914183  2.417032  2.496381
+0.948776  1.275594  1.738944  1.998684  2.312154  2.462020
+0.921081  1.311946  1.775244  1.895491  2.382160  2.528440
+0.811311  1.125217  1.745194  2.094737  2.326109  2.511883
+0.796518  1.060230  1.740129  2.060503  2.179506  2.385501
+0.868836  1.153353  1.792833  1.945638  2.125498  2.248001
+0.915536  1.218160  1.818910  2.068347  2.243402  2.348648
+0.966595  1.301606  1.895255  2.111957  2.248646  2.389247
+0.995849  1.442084  1.952071  2.066120  2.240125  2.338587
+1.056392  1.372214  1.984171  2.119327  2.271702  2.372743
+1.098400  1.324164  1.781533  2.082856  2.218804  2.344318
+1.039157  1.356474  1.820178  2.114625  2.346728  2.450389
+0.988689  1.293884  1.916348  2.088201  2.362497  2.481270
+1.104406  1.230679  1.939434  2.122401  2.254811  2.377705
+1.086105  1.174481  1.826346  2.111318  2.237689  2.471667
+1.069802  1.206486  1.845381  2.118634  2.471087  2.575405
+1.074963  1.342794  1.955309  2.147713  2.511467  2.589270
+1.149198  1.418813  1.887043  1.966968  2.472616  2.587246
+1.455749  1.669829  1.964104  2.175182  2.469990  2.605009
+1.418548  1.603566  1.964426  2.175678  2.466765  2.583333
+1.389392  1.601163  1.925746  2.131857  2.442025  2.574229
+1.415333  1.507338  1.911262  2.087139  2.535199  2.629580
+1.382483  1.453710  1.872292  1.955406  2.554343  2.658507
+1.392944  1.482296  1.838526  1.928577  2.473732  2.633718
+1.390456  1.463044  1.839906  1.922012  2.514942  2.698788
+1.339376  1.470118  1.858751  1.959522  2.539427  2.686382
+1.353776  1.541029  1.822546  2.022164  2.542215  2.677200
+1.350868  1.631877  1.918792  2.183528  2.501087  2.617310
+1.407644  1.669128  2.000740  2.224226  2.522804  2.634897
+1.433780  1.586913  1.999627  2.192922  2.535981  2.626121
+1.413876  1.639426  1.952196  2.170695  2.501106  2.610591
+1.505388  1.613685  1.991590  2.214459  2.487873  2.612841
+1.409245  1.563694  2.048043  2.154145  2.483727  2.642180
+1.411023  1.646699  1.983177  2.152550  2.568807  2.661248
+1.384745  1.603808  1.934487  2.141949  2.507642  2.630050
+1.366120  1.551337  1.999561  2.177467  2.489112  2.596761
+1.355542  1.635015  2.008420  2.162675  2.465273  2.661406
+1.453972  1.673697  2.037857  2.180201  2.615971  2.709278
+1.369538  1.696466  1.999789  2.084847  2.482775  2.666286
+1.349740  1.462313  1.966717  2.051722  2.472616  2.652615
+1.327312  1.437762  1.928517  2.006392  2.505810  2.658921
+1.341350  1.419153  1.921202  1.991463  2.530825  2.613585
+1.342697  1.505329  1.946926  2.029431  2.538224  2.635583
+1.392743  1.535099  1.936104  2.024567  2.527279  2.614258
+1.432564  1.543790  1.951854  2.049855  2.546244  2.623711
+1.452940  1.569432  1.932369  2.037247  2.558693  2.638096
+1.467999  1.597453  1.920306  2.018574  2.536219  2.622824
+1.486806  1.569654  1.875855  1.966065  2.536740  2.631905
+1.454618  1.578126  1.811620  1.974659  2.537513  2.606334
+1.418040  1.507665  1.783572  1.893001  2.551797  2.628991
+1.264140  1.474380  1.770586  1.898927  2.524762  2.594073
+1.118340  1.456671  1.734720  1.996589  2.412285  2.519146
+1.096432  1.603123  1.808391  2.012238  2.409620  2.544361
+0.976303  1.473740  1.759171  1.855828  2.412929  2.483947
+0.990184  1.390703  1.710711  1.831672  2.377092  2.454935
+1.056900  1.387366  1.783109  1.873514  2.401419  2.486425
+0.989786  1.452622  1.851566  1.945924  2.403454  2.482939
+1.112084  1.364820  1.770002  1.921998  2.290405  2.437297
+1.096250  1.336388  1.741855  1.968572  2.211613  2.362493
+1.000030  1.346185  1.704531  1.966852  2.277389  2.389374
+1.027901  1.174070  1.793005  2.026854  2.178200  2.387232
+1.056882  1.167504  1.861000  2.204421  2.351246  2.485631
+1.075972  1.226420  1.997644  2.196176  2.330099  2.494137
+1.147221  1.258128  1.958667  2.258550  2.387749  2.552119
+1.162811  1.290567  2.052795  2.201829  2.424621  2.560484
+1.147890  1.265733  2.025675  2.130794  2.496878  2.620259
+1.239563  1.315734  2.018377  2.123513  2.463946  2.569207
+1.181131  1.358942  1.942155  2.159833  2.458701  2.593961
+1.247455  1.386435  1.898250  1.999009  2.446020  2.542764
+1.227695  1.504889  1.817998  1.908019  2.213334  2.552228
+1.201972  1.577872  1.771276  1.873354  2.061263  2.535817
+1.306230  1.516310  1.819234  1.923423  2.382025  2.582568
+1.505719  1.585654  1.949330  2.046203  2.448307  2.615962
+1.623749  1.698728  2.009543  2.108007  2.461522  2.647903
+1.690861  1.764294  2.036097  2.175502  2.515253  2.616822
+1.715336  1.828294  2.078551  2.252209  2.483666  2.607649
+1.659970  1.807170  1.975009  2.255594  2.481341  2.589617
+1.734824  1.850216  2.012044  2.276744  2.519359  2.608181
+1.635768  1.862548  1.956456  2.328743  2.568869  2.632471
+1.616355  1.825398  1.949523  2.281216  2.560861  2.641804
+1.592472  1.804360  1.927158  2.167339  2.577510  2.646873
+1.606484  1.895095  1.983153  2.112452  2.477608  2.576959
+1.708493  1.835068  1.966711  2.127238  2.427571  2.543077
+1.691093  1.889580  1.986069  2.206774  2.522399  2.601798
+1.702442  1.902120  2.076380  2.216219  2.484843  2.603543
+1.329491  1.542588  1.875436  2.105532  2.385234  2.536630
+1.321384  1.474161  1.932268  2.152505  2.374420  2.506710
+1.277750  1.458580  1.963094  2.182377  2.417003  2.558654
+1.208016  1.418710  2.009739  2.138531  2.396782  2.554506
+1.198910  1.299925  1.983625  2.150128  2.296124  2.505944
+1.250344  1.361156  2.010558  2.195944  2.340984  2.500873
+1.308664  1.585162  2.106341  2.214164  2.402673  2.635894
+1.330165  1.494630  2.141901  2.235810  2.459582  2.649465
+1.296306  1.434105  2.098086  2.204131  2.355208  2.600113
+1.309619  1.402978  1.892542  2.184955  2.333605  2.513160
+1.269067  1.491839  1.958963  2.174572  2.324689  2.543667
+1.434975  1.628849  1.981273  2.247282  2.476397  2.593980
+1.459644  1.650080  2.024368  2.267723  2.546314  2.675203
+1.381486  1.703195  2.138905  2.295559  2.545762  2.642527
+1.441842  1.700585  2.197906  2.276293  2.468211  2.694954
+1.539669  1.999668  2.206532  2.351484  2.651231  2.734825
+1.589576  1.926407  2.173457  2.256196  2.633242  2.707677
+1.434262  1.859373  2.141950  2.211447  2.511783  2.628376
+1.326814  1.596573  2.024769  2.115813  2.426136  2.609340
+1.229072  1.325550  1.838698  2.013045  2.471300  2.639281
+1.230813  1.329059  1.872619  1.964510  2.444752  2.594694
+1.193705  1.426297  1.898594  2.039364  2.502714  2.581046
+1.175637  1.473287  1.912423  2.002740  2.476222  2.606851
+1.099269  1.443896  1.892457  1.997567  2.522081  2.611086
+1.113739  1.439098  1.912268  2.000476  2.462769  2.559343
+1.085510  1.469634  1.914465  2.064613  2.427917  2.512412
+1.052481  1.501205  1.918797  1.999794  2.493684  2.571708
+1.043597  1.331616  1.927947  1.989186  2.445730  2.578082
+1.051981  1.200390  1.938627  2.026811  2.446750  2.629884
+0.978672  1.083042  1.868777  2.133583  2.430141  2.580267
+0.904772  1.105214  1.960566  2.064948  2.362564  2.604875
+0.859439  1.084629  1.901705  2.033000  2.276166  2.574716
+0.948943  1.043554  1.855644  2.050857  2.444431  2.661478
+0.974338  1.126459  1.927321  2.020910  2.455487  2.559782
+0.995629  1.175887  1.937743  2.013680  2.378974  2.617290
+1.001312  1.224390  1.901702  1.976467  2.425878  2.574844
+0.985969  1.282601  1.886614  2.032451  2.455957  2.599528
+0.927590  1.320448  1.924006  2.012174  2.498308  2.599681
+1.007942  1.383963  1.921628  2.007624  2.507570  2.607500
+0.972512  1.446775  1.920365  2.013492  2.490207  2.576492
+0.951123  1.452036  1.889861  1.987269  2.421483  2.562217
+0.924342  1.369953  1.851744  1.942740  2.475661  2.544282
+0.882605  1.301666  1.850813  2.032498  2.364632  2.541824
+0.933888  1.368996  1.943109  2.023849  2.405442  2.530330
+0.927916  1.112379  1.847430  1.979093  2.255596  2.563992
+1.031936  1.249132  1.833165  1.925221  2.310315  2.520141
+0.934046  1.239886  1.909603  2.008149  2.372869  2.548965
+0.984297  1.220031  1.823788  1.947602  2.264359  2.478653
+0.933366  1.278980  1.860469  1.942999  2.289801  2.465670
+0.983115  1.227707  1.842104  2.047699  2.272651  2.531979
+0.953311  1.245822  1.849685  1.945142  2.289569  2.572282
+0.994609  1.303464  1.868144  1.971560  2.372435  2.585257
+0.986061  1.364094  1.852132  1.917821  2.435113  2.633873
+0.975486  1.248848  1.848797  1.934434  2.402023  2.574203
+1.008388  1.304679  1.804310  1.888508  2.369473  2.598230
+0.999393  1.329937  1.901438  1.994378  2.397503  2.504548
+0.922186  1.321538  1.851082  1.962056  2.382159  2.472985
+0.897224  1.382187  1.780842  1.921734  2.359590  2.448091
+0.859516  1.447371  1.732311  1.881193  2.295231  2.380849
+0.986347  1.601641  1.752386  1.966362  2.314384  2.459101
+1.265264  1.616535  1.811273  2.097139  2.371242  2.550361
+1.318958  1.600426  1.755641  2.029814  2.329188  2.493144
+1.209901  1.470135  1.670187  1.970732  2.416208  2.523420
+1.122232  1.308395  1.457114  1.720231  2.384259  2.470421
+1.077675  1.245511  1.366478  1.664281  2.327344  2.419196
+1.075445  1.228131  1.365376  1.558947  2.238585  2.324563
+1.044502  1.215785  1.325993  1.645187  2.148642  2.225749
+0.955863  1.150609  1.283133  1.492306  2.177576  2.266677
+0.909204  1.045108  1.166160  1.320593  2.215965  2.352846
+0.960368  1.103540  1.278352  1.467726  2.260152  2.460237
+1.010220  1.186777  1.290055  1.578425  2.388733  2.500317
+1.020144  1.135718  1.239343  1.388838  2.438182  2.563922
+1.082493  1.206954  1.347455  1.490039  2.404819  2.494617
+1.144114  1.278638  1.434725  1.567887  2.322768  2.424800
+1.274296  1.348789  1.515602  1.632221  2.360105  2.552789
+1.301328  1.390629  1.638492  1.764907  2.347961  2.576115
+1.358515  1.444452  1.724492  1.843715  2.478143  2.574552
+1.399712  1.513306  1.791713  1.902169  2.495815  2.581592
+1.448866  1.534750  1.821506  1.931492  2.517823  2.622859
+1.438398  1.530057  1.831437  1.999329  2.531929  2.623280
+1.511918  1.581087  1.927484  2.041399  2.573287  2.663469
+1.535380  1.608310  1.924231  2.048796  2.546746  2.681650
+1.544368  1.620413  1.980425  2.068130  2.477398  2.626652
+1.558461  1.643007  2.024613  2.121014  2.451868  2.639494
+1.524202  1.613947  2.005898  2.115477  2.429090  2.663085
+1.504519  1.590381  1.966356  2.072628  2.376901  2.621094
+1.439395  1.512336  1.950354  2.058564  2.276407  2.573036
+1.315215  1.400050  1.854752  1.957633  2.246197  2.576501
+1.288117  1.488904  1.945571  2.024839  2.439848  2.605685
+1.436278  1.667254  2.056847  2.146443  2.548238  2.661743
+1.417389  1.819841  2.083572  2.220278  2.606693  2.690863
+1.373599  1.963014  2.144565  2.274057  2.547389  2.638900
+1.320367  1.918635  2.063208  2.237723  2.415847  2.517654
+1.223778  1.619753  1.890594  2.107915  2.520999  2.629701
+1.018748  1.427668  1.917566  2.001782  2.435507  2.564351
+1.026252  1.377048  1.949170  2.039209  2.393769  2.530053
+1.009988  1.472847  1.998049  2.079876  2.484961  2.553950
+1.053267  1.468372  2.016120  2.129309  2.456623  2.564128
+1.101072  1.355268  2.010441  2.107467  2.395605  2.537748
+1.132796  1.391658  2.016574  2.114099  2.497623  2.585099
+1.173305  1.443009  1.970633  2.104863  2.447883  2.535937
+1.209478  1.384097  1.972240  2.069587  2.457494  2.573686
+1.242419  1.453561  1.983731  2.068419  2.471041  2.593609
+1.320388  1.463651  1.997825  2.082334  2.472034  2.605892
+1.389516  1.477732  1.978692  2.094038  2.480170  2.644445
+1.413743  1.526085  1.963751  2.113919  2.403846  2.654427
+1.519419  1.592852  1.919458  2.024494  2.301172  2.668892
+1.513663  1.600129  1.922007  2.105104  2.278322  2.523416
+1.481852  1.659944  1.913552  2.049439  2.272255  2.493787
+1.567545  1.659167  1.930647  2.071517  2.312595  2.564270
+1.550890  1.677657  1.863928  2.010128  2.223475  2.520007
+1.572772  1.683020  1.863047  2.002198  2.320378  2.560791
+1.621943  1.734050  1.920642  2.062932  2.335107  2.576252
+1.631487  1.697136  1.952883  2.056578  2.459627  2.652858
+1.594706  1.671490  1.936091  2.013301  2.430776  2.669632
+1.601444  1.668704  1.945495  2.037168  2.503369  2.682121
+1.587570  1.664898  1.944621  2.032989  2.569757  2.703408
+1.556417  1.631245  1.930707  2.040513  2.453873  2.665177
+1.487851  1.565634  1.892869  2.011729  2.393945  2.647118
+1.406012  1.520184  1.791646  1.987880  2.289334  2.602762
+1.358221  1.436040  1.818480  1.957084  2.309801  2.605784
+1.309339  1.405329  1.835697  2.076369  2.340807  2.613062
+1.303792  1.415614  1.985149  2.129488  2.469355  2.643119
+1.358952  1.437733  1.988826  2.127374  2.537981  2.656471
+1.333866  1.480460  1.950069  2.122437  2.431168  2.587133
+1.384528  1.539708  1.964093  2.130549  2.510449  2.652805
+1.412625  1.544436  1.947280  2.173185  2.593018  2.716637
+1.433269  1.539892  2.004125  2.201951  2.515051  2.635244
+1.447580  1.554019  2.128269  2.240167  2.470753  2.657077
+1.480647  1.609898  2.097964  2.167566  2.473701  2.700702
+1.607823  1.675959  2.023409  2.146384  2.426913  2.636247
+1.643303  1.717783  2.060655  2.197557  2.415413  2.614329
+1.737392  1.816967  2.039362  2.219707  2.422999  2.623531
+1.694258  1.799366  2.042600  2.280098  2.418626  2.583273
+1.556188  1.831866  1.985355  2.207899  2.471677  2.630819
+1.421150  1.803896  1.984581  2.123513  2.438200  2.522496
+1.327444  1.668870  1.888433  2.029945  2.224455  2.461746
+1.109824  1.562199  1.862663  1.977860  2.139552  2.328644
+1.233875  1.580797  1.854187  2.021788  2.193504  2.355917
+1.207537  1.568638  1.872908  1.986671  2.137938  2.487653
+1.179978  1.625946  1.900003  2.008135  2.231660  2.594349
+1.469842  1.717204  1.875670  2.024433  2.325463  2.488422
+1.641097  1.809779  1.926763  2.062053  2.414037  2.542900
+1.648803  1.734123  1.966905  2.086726  2.354475  2.498840
+1.605468  1.689394  2.010048  2.114211  2.407628  2.527066
+1.520887  1.628733  1.977005  2.086771  2.340162  2.489336
+1.503816  1.600587  2.039010  2.130377  2.396482  2.513742
+1.437817  1.545316  2.043931  2.188366  2.356821  2.521449
+1.445398  1.549208  1.982213  2.096659  2.328629  2.462126
+1.416417  1.504357  1.973772  2.080427  2.393479  2.543532
+1.425822  1.528083  1.995729  2.162530  2.440693  2.562510
+1.394274  1.473952  2.043537  2.149086  2.432979  2.549080
+1.373755  1.476048  2.043903  2.160251  2.345351  2.501882
+1.370183  1.443588  2.092872  2.178103  2.413056  2.590595
+1.320393  1.466374  2.036782  2.137812  2.435621  2.578912
+1.286926  1.393325  2.060733  2.200945  2.500015  2.582353
+1.323391  1.421794  2.058500  2.153930  2.495548  2.638088
+1.295313  1.393216  2.004420  2.138189  2.526374  2.641535
+1.230979  1.355132  2.047369  2.156418  2.522379  2.664129
+1.233755  1.308524  1.939495  2.097348  2.487349  2.649836
+1.227589  1.355101  1.875835  1.977538  2.319288  2.575191
+1.227369  1.507108  1.853515  2.022894  2.212431  2.576493
+1.152896  1.470513  1.830430  1.954309  2.331452  2.533253
+1.336656  1.650185  1.779214  2.043424  2.444821  2.539640
+1.455824  1.582937  2.022254  2.176680  2.481340  2.592664
+1.437625  1.556245  2.081454  2.174959  2.482445  2.614573
+1.416470  1.620886  2.033007  2.157073  2.462925  2.601588
+1.376304  1.551493  2.117213  2.198338  2.416190  2.605635
+1.442804  1.657855  2.127088  2.206301  2.344857  2.578113
+1.368110  1.538734  2.060199  2.198045  2.366884  2.622242
+1.346445  1.428338  1.980453  2.126605  2.283275  2.530611
+1.304592  1.373259  1.923523  2.096362  2.239964  2.508433
+1.298027  1.371594  1.954971  2.107512  2.349707  2.545570
+1.307177  1.416169  1.980337  2.064455  2.389102  2.588444
+1.279296  1.390782  1.959784  2.090687  2.436145  2.612606
+1.317020  1.415866  1.921874  2.071794  2.463821  2.616221
+1.294309  1.412297  1.916195  2.019201  2.484708  2.611341
+1.310051  1.407774  1.853169  2.009907  2.466493  2.645013
+1.341298  1.422330  1.885156  1.967813  2.483863  2.626324
+1.428263  1.526125  1.885115  1.978529  2.499386  2.603389
+1.501165  1.580511  1.847282  2.000494  2.465952  2.608868
+1.538510  1.625396  1.813916  1.950057  2.522899  2.620472
+1.566628  1.639602  1.771792  1.878749  2.541764  2.663693
+1.543435  1.647821  1.748616  1.822597  2.434677  2.631280
+1.623389  1.680917  1.759152  1.844539  2.521467  2.653611
+1.574857  1.663719  1.767780  1.869740  2.453335  2.658218
+1.558309  1.661251  1.793844  1.895130  2.261873  2.572330
+1.543680  1.627756  1.817671  1.921282  2.432997  2.653342
+1.493536  1.575657  1.805687  1.939448  2.470642  2.665081
+1.440050  1.513838  1.832212  1.937802  2.530248  2.702867
+1.319101  1.506232  1.823485  1.931612  2.539554  2.676703
+1.307271  1.563371  1.847930  1.951724  2.251818  2.453220
+1.336405  1.661596  1.828825  1.988331  2.189506  2.354248
+1.342922  1.598751  1.784739  1.915122  2.109991  2.450644
+1.336704  1.646363  1.800742  1.891215  2.235913  2.558506
+1.311763  1.500014  1.830220  1.945042  2.430387  2.644578
+1.266113  1.431962  1.858757  2.059148  2.590485  2.674762
+1.317779  1.419948  1.916462  2.124820  2.574729  2.668476
+1.341519  1.436167  1.968421  2.097444  2.572787  2.685098
+1.305930  1.438859  1.933746  2.036080  2.569070  2.656417
+1.279130  1.406473  1.943094  2.031719  2.530080  2.630882
+1.286005  1.410029  1.969688  2.040243  2.448573  2.651374
+1.257538  1.391063  1.966565  2.039208  2.402422  2.646794
+1.224386  1.352129  1.931370  2.006343  2.456203  2.696151
+1.296292  1.488099  1.996948  2.068189  2.594535  2.695842
+1.334566  1.607716  1.922141  2.163161  2.545921  2.679970
+1.381781  1.646772  2.037640  2.204087  2.545791  2.639326
+1.416818  1.628929  2.045931  2.209348  2.523853  2.675794
+1.431463  1.694802  1.998932  2.159531  2.522928  2.664749
+1.384236  1.622936  2.036943  2.115706  2.528893  2.633929
+1.403832  1.558362  2.027347  2.138015  2.562774  2.659379
+1.390591  1.671936  2.017942  2.164595  2.592820  2.683609
+1.357527  1.553759  2.023137  2.212306  2.420463  2.558257
+1.301715  1.465816  2.052932  2.215957  2.420685  2.548524
+1.339331  1.597053  2.035156  2.145819  2.509602  2.644137
+1.346088  1.633870  2.006920  2.114724  2.570026  2.688879
+1.358438  1.501669  1.949578  2.027633  2.479635  2.637460
+1.427991  1.533690  1.853629  1.960806  2.437544  2.588461
+1.507003  1.585812  1.864642  1.950265  2.478769  2.624546
+1.535154  1.619477  1.784602  1.926332  2.537152  2.665799
+1.499658  1.574823  1.685832  1.822553  2.533986  2.705306
+1.585485  1.642424  1.721846  1.846735  2.524494  2.710346
+1.167359  1.627213  1.768394  1.853039  2.265556  2.540517
+1.110320  1.506953  1.805632  1.881807  2.361271  2.589961
+1.066434  1.539420  1.746305  1.936119  2.127988  2.461181
+1.110995  1.565351  1.852078  1.960462  2.214924  2.497897
+1.116118  1.590687  1.879184  1.969081  2.323294  2.532966
+1.148401  1.557455  1.819964  1.963793  2.380344  2.484532
+1.092558  1.569815  1.784004  1.959241  2.324259  2.468490
+1.212996  1.578928  1.751637  1.901569  2.271773  2.386093
+1.123979  1.626268  1.758062  1.983762  2.291127  2.408000
+1.075785  1.534831  1.784777  2.041940  2.236695  2.368112
+1.118783  1.415693  1.971932  2.122755  2.330245  2.440458
+1.016087  1.334517  1.899204  2.121574  2.425143  2.543872
+1.066196  1.289419  1.948157  2.081946  2.471493  2.593822
+1.064989  1.255756  1.935973  2.036951  2.493176  2.612753
+1.049670  1.228450  1.829530  2.025060  2.431071  2.670840
+1.019627  1.313583  1.880313  1.953952  2.491693  2.642660
+1.153477  1.551900  1.909752  2.133530  2.540066  2.626465
+1.293030  1.600480  2.035687  2.166885  2.572967  2.658261
+1.409308  1.624144  1.993621  2.268493  2.527057  2.651858
+1.426397  1.681509  2.039405  2.215283  2.559060  2.681401
+1.422045  1.752644  2.027991  2.231432  2.546485  2.631238
+1.403067  1.735547  2.007077  2.202109  2.635543  2.718353
+1.364124  1.687363  2.011927  2.293629  2.640697  2.705256
+1.328058  1.608269  1.989851  2.364958  2.590564  2.689451
+1.333592  1.644867  2.130503  2.308577  2.644140  2.732807
+1.405236  1.665965  2.123365  2.315861  2.656941  2.732874
+1.435372  1.679544  2.019100  2.254404  2.596082  2.674056
+1.041025  1.476515  1.923322  2.290557  2.592337  2.673623
+0.818396  1.189747  2.051367  2.233382  2.417100  2.622567
+0.745703  1.240251  2.139256  2.224179  2.476418  2.558791
+0.786217  1.296744  2.004359  2.245816  2.548718  2.631400
+0.781573  1.122340  1.875748  2.277284  2.459421  2.557207
+0.697586  1.327149  2.097985  2.173556  2.574671  2.693605
+0.773107  1.393007  1.971171  2.270220  2.591495  2.651543
+0.799951  1.252666  1.928383  2.211233  2.577718  2.683817
+0.737528  1.237907  1.827160  2.110526  2.476303  2.627671
+0.896067  1.421355  1.841161  2.104821  2.432869  2.585719
+0.920446  1.418578  1.943416  2.252701  2.491235  2.623110
+0.905094  1.284731  1.843688  2.269109  2.479541  2.595905
+1.049549  1.447497  1.841173  2.160358  2.575747  2.655700
+1.282800  1.445416  1.901230  2.290173  2.581640  2.678726
+1.174710  1.517021  1.867926  2.176617  2.547483  2.640154
+1.241259  1.518496  1.936773  2.208770  2.521322  2.619833
+1.321929  1.540199  1.998528  2.205769  2.605663  2.707912
+1.303802  1.622926  1.880392  2.189485  2.588909  2.669966
+1.360827  1.658553  1.903323  2.178010  2.554280  2.634772
+1.385461  1.623312  1.959095  2.257739  2.605390  2.694616
+1.467954  1.628168  2.003097  2.348920  2.596096  2.674558
+1.411837  1.691393  1.947010  2.259218  2.526145  2.615112
+1.415256  1.697464  2.003104  2.284290  2.526236  2.643365
+1.365343  1.610187  2.022103  2.171703  2.557595  2.642236
+1.343948  1.630769  2.040836  2.261714  2.477921  2.647359
+1.333580  1.630378  2.031205  2.210871  2.504057  2.623327
+1.344121  1.704685  2.065813  2.192571  2.541365  2.658520
+1.439884  1.666588  2.082726  2.206006  2.636341  2.699174
+1.344355  1.655936  2.026852  2.227832  2.565868  2.661265
+1.299677  1.585295  1.961552  2.231139  2.599559  2.677599
+1.184434  1.441654  1.888542  2.255409  2.554664  2.625508
+1.446570  1.792548  2.022664  2.179214  2.497160  2.591115
+1.464682  1.809276  2.060194  2.205446  2.545963  2.641910
+1.481290  1.729523  2.025686  2.250012  2.537459  2.667746
+1.476458  1.657788  2.008062  2.249201  2.503220  2.613116
+1.386264  1.589548  2.031702  2.218301  2.509210  2.619100
+1.386263  1.662864  2.052585  2.208677  2.488387  2.623049
+1.438117  1.646070  1.967818  2.212439  2.508718  2.629395
+1.437599  1.590230  2.089082  2.184453  2.566546  2.677847
+1.367022  1.652527  2.084373  2.169492  2.483600  2.655744
+1.403779  1.701337  2.062797  2.148537  2.443186  2.657250
+1.399193  1.706047  2.062427  2.144585  2.531224  2.635014
+1.409664  1.750569  2.005073  2.087238  2.602834  2.694068
+1.430153  1.760399  2.048802  2.118059  2.569383  2.657275
+1.418847  1.858926  2.018666  2.141412  2.597867  2.671139
+1.515040  1.815611  1.942165  2.089059  2.554645  2.634597
+1.420031  1.740119  1.953746  2.196133  2.502692  2.639749
+1.384099  1.723309  1.901165  2.160196  2.426618  2.522583
+1.341050  1.737372  1.894752  2.110869  2.407505  2.502838
+1.375756  1.553983  1.784274  1.981423  2.504116  2.571526
+1.414589  1.520552  1.715365  2.013015  2.511199  2.608636
+1.384971  1.519108  1.696689  1.939377  2.575701  2.644752
+1.377861  1.611683  1.751236  2.044564  2.493605  2.567974
+1.360853  1.553679  1.693976  2.036113  2.535885  2.588469
+1.391629  1.489335  1.631480  1.853083  2.529546  2.631825
+1.364077  1.476053  1.629040  1.949019  2.525741  2.587922
+1.243896  1.398594  1.539687  2.066323  2.528653  2.592221
+1.255509  1.429357  1.548843  1.950985  2.519984  2.574845
+1.213331  1.388798  1.505976  1.886640  2.486118  2.545361
+1.125797  1.286903  1.534946  1.982051  2.490209  2.570684
+1.132522  1.296198  1.460831  1.925246  2.355670  2.444037
+1.146734  1.365341  1.496067  2.020613  2.448334  2.510650
+1.192778  1.378937  1.491161  1.959258  2.459140  2.519716
+1.271605  1.383883  1.525856  1.953206  2.473140  2.526275
+1.199948  1.366094  1.519729  1.926772  2.562989  2.623739
+1.236017  1.383510  1.510394  1.793300  2.585490  2.677079
+1.277218  1.416561  1.539447  1.923790  2.599080  2.667723
+1.195957  1.408063  1.568713  2.090793  2.622180  2.668897
+1.174436  1.300805  1.706567  2.070327  2.332828  2.490999
+1.120253  1.252790  1.562102  2.057117  2.357857  2.488099
+1.176325  1.291966  1.760265  2.093355  2.395545  2.591528
+1.197722  1.415532  1.801926  2.033180  2.459620  2.592560
+1.170462  1.491249  1.888044  2.082479  2.392285  2.528149
+1.083509  1.491779  1.949458  2.046197  2.422471  2.591609
+1.059936  1.417978  1.954816  2.073246  2.480964  2.599125
+0.939633  1.348507  2.005684  2.094229  2.474051  2.580294
+0.849679  1.293534  1.998123  2.105266  2.410101  2.615907
+0.886534  1.432349  1.990451  2.089797  2.379083  2.539500
+0.973462  1.473622  1.944390  2.051837  2.393100  2.468610
+1.041989  1.576432  1.952733  2.062536  2.326319  2.437768
+1.048696  1.543946  1.799024  2.015259  2.415911  2.487382
+1.060745  1.463281  1.792003  1.940494  2.417438  2.517618
+1.086879  1.350511  1.715443  1.804481  2.481994  2.577240
+1.237763  1.487227  1.724896  1.808323  2.528530  2.614554
+1.398461  1.499585  1.705939  1.817865  2.537422  2.611149
+1.461839  1.549278  1.719489  1.835184  2.480052  2.656622
+1.411934  1.594838  1.722617  1.840214  2.536598  2.618705
+1.527085  1.609472  1.704839  1.832817  2.512769  2.605081
+1.549304  1.649714  1.747183  1.838847  2.593282  2.681523
+1.408650  1.622130  1.797760  1.950766  2.238972  2.463941
+1.463558  1.647961  1.790731  1.921407  2.348044  2.572625
+1.531892  1.700373  1.834041  2.005597  2.413477  2.570542
+1.595204  1.681563  1.857023  2.020177  2.475381  2.620261
+1.578383  1.651863  1.912263  2.011994  2.512496  2.625607
+1.551105  1.644360  1.936207  2.041608  2.527321  2.617243
+1.531973  1.623150  1.927602  2.007454  2.528038  2.634563
+1.492463  1.579493  1.908682  1.998228  2.490609  2.583094
+1.445430  1.548758  1.913697  2.002797  2.519245  2.610948
+1.397285  1.482251  1.891220  1.983837  2.474487  2.607776
+1.358299  1.562942  1.902050  2.003614  2.425639  2.585407
+1.313352  1.518886  1.923066  2.011942  2.496939  2.583703
+1.321679  1.506830  1.903064  1.990064  2.510610  2.619736
+1.272893  1.513437  1.897901  2.039656  2.536517  2.604144
+1.255738  1.431150  1.896619  1.960886  2.526746  2.624236
+1.253559  1.392826  1.893788  1.975079  2.520685  2.596673
+1.212336  1.375220  1.860311  1.964962  2.531189  2.598668
+1.177442  1.324186  1.806632  1.885288  2.487316  2.595463
+1.184996  1.383080  1.783224  1.863469  2.466568  2.570648
+1.162268  1.444731  1.797884  1.960244  2.515838  2.594432
+1.293132  1.612625  1.912866  2.113069  2.467202  2.592647
+1.354402  1.698025  1.960114  2.149465  2.532985  2.652695
+1.412069  1.729124  2.034085  2.172945  2.538810  2.643693
+1.391792  1.801757  1.944790  2.194546  2.467300  2.547714
+1.476077  1.743192  1.982548  2.141155  2.559049  2.642891
+1.423680  1.857196  1.998407  2.146989  2.499501  2.583857
+1.420678  1.878169  2.012321  2.298282  2.578266  2.665489
+1.455663  1.910540  2.069836  2.393055  2.593493  2.679808
+1.525575  1.925713  2.186470  2.400715  2.660126  2.743114
+1.376147  1.633438  1.934297  2.250493  2.494057  2.618970
+1.354498  1.560950  1.931259  2.207320  2.500701  2.611053
+1.308071  1.569512  1.967243  2.245460  2.461123  2.595512
+1.347009  1.654983  1.980907  2.251887  2.510089  2.634977
+1.478008  1.588438  2.038202  2.224140  2.499366  2.646631
+1.451530  1.630286  2.114101  2.249734  2.416504  2.651801
+1.412137  1.655832  2.128349  2.224639  2.525056  2.681740
+1.374504  1.848893  2.140832  2.291897  2.602827  2.691005
+1.378568  1.744853  2.106673  2.201221  2.626831  2.711996
+1.082739  1.603117  2.070774  2.129571  2.504286  2.657551
+1.013288  1.467910  1.960032  2.091788  2.362049  2.561554
+0.994100  1.328068  1.791699  1.902549  2.410628  2.501324
+0.999159  1.325245  1.722310  1.871377  2.281177  2.502088
+1.035282  1.338082  1.653023  1.759760  2.441464  2.540672
+1.077126  1.293589  1.565666  1.711796  2.330341  2.436256
+1.058117  1.243026  1.488328  1.623677  2.330121  2.429536
+1.150659  1.296201  1.574724  1.701839  2.390475  2.507354
+1.167918  1.382035  1.573815  1.795297  2.440653  2.490361
+1.221368  1.405075  1.535783  1.728642  2.412290  2.519375
+1.248273  1.383975  1.572280  1.826858  2.425352  2.494218
+1.274149  1.386267  1.557821  1.734106  2.378306  2.477968
+1.343890  1.456032  1.668535  1.815600  2.248744  2.419705
+1.356022  1.559300  1.731279  1.853333  2.343968  2.514760
+1.433214  1.575906  1.673186  1.781463  2.292800  2.491264
+1.354708  1.637604  1.875368  2.162870  2.408490  2.566375
+1.464664  1.591442  2.071219  2.235462  2.398887  2.563489
+1.424812  1.622646  2.020332  2.161315  2.328264  2.468190
+1.364274  1.516152  2.011760  2.109608  2.395705  2.554722
+1.342677  1.460516  2.038898  2.122976  2.506655  2.643449
+1.338308  1.519884  2.030044  2.100145  2.533338  2.674767
+1.321127  1.545574  1.977232  2.122268  2.557592  2.680218
+1.315091  1.467109  1.972429  2.068538  2.526845  2.645634
+1.304457  1.400689  1.954545  2.053140  2.562504  2.685886
+1.267182  1.376660  1.888057  2.029893  2.545417  2.669311
+1.225012  1.339338  1.887320  1.965236  2.543506  2.672285
+1.226210  1.403527  1.797664  1.959693  2.540988  2.627346
+1.347025  1.607942  1.966769  2.184515  2.477879  2.608821
+1.332099  1.755961  1.948416  2.176713  2.513390  2.601370
+1.349288  1.781404  1.922794  2.109230  2.462878  2.559863
+1.362379  1.693594  1.884339  2.088053  2.522473  2.613966
+1.320290  1.510299  1.857749  2.065435  2.494726  2.605564
+1.282991  1.459743  1.744910  1.961419  2.439941  2.623746
+1.251365  1.381919  1.673542  1.772697  2.323540  2.661592
+1.204256  1.435153  1.654230  1.737800  2.305057  2.581558
+1.181960  1.465280  1.670027  1.861303  2.444123  2.546129
+1.347122  1.628258  1.931339  2.123429  2.466851  2.598918
+1.170479  1.284934  1.552741  1.832546  2.299787  2.519811
+1.190040  1.284015  1.646086  1.969170  2.496917  2.620449
+1.255411  1.381474  1.781732  2.094994  2.431362  2.593520
+1.231880  1.334167  1.796249  2.040002  2.387081  2.554655
+1.180520  1.308571  1.818239  1.976323  2.293501  2.451796
+1.102564  1.266319  1.844247  1.961761  2.324841  2.514083
+1.004636  1.144874  1.835019  1.997102  2.182380  2.522076
+0.956994  1.212915  1.940923  2.060449  2.312226  2.441670
+0.795434  1.444280  1.932418  2.047161  2.365680  2.450523
+0.942462  1.606038  2.025121  2.119735  2.299947  2.431814
+0.812186  1.469389  2.078323  2.173021  2.391967  2.474051
+0.831008  1.620609  2.092943  2.167732  2.334863  2.416721
+0.917049  1.800997  2.121233  2.199383  2.347284  2.440519
+0.857286  1.679152  2.112428  2.203072  2.444738  2.529211
+0.809582  1.542552  2.182369  2.239437  2.461979  2.543366
+0.912283  1.779198  2.166321  2.251092  2.461682  2.576876
+0.774827  1.770199  2.179196  2.239611  2.487323  2.560225
+1.222989  1.574575  2.081078  2.223587  2.501523  2.661302
+1.394216  1.696320  2.036647  2.273328  2.570400  2.684130
+1.370771  1.698913  2.082660  2.245671  2.598794  2.695446
+1.372406  1.647175  2.142373  2.272905  2.608093  2.686558
+1.342788  1.694536  2.123284  2.256762  2.575277  2.690952
+1.380553  1.750680  2.123405  2.199744  2.488043  2.610243
+1.395056  1.883317  2.088702  2.189488  2.458258  2.548140
+1.413151  1.872836  2.020835  2.161956  2.396167  2.487013
+1.403097  1.764242  1.911249  2.055851  2.391006  2.484601
+1.250592  1.606846  1.834805  1.914414  2.344090  2.549461
+1.171007  1.406438  1.699124  1.858102  2.354073  2.471053
+1.132691  1.251867  1.521350  1.638290  2.355284  2.470608
+1.011681  1.287897  1.450262  1.663822  2.285463  2.371452
+1.030244  1.208417  1.366673  1.550352  2.337520  2.421401
+0.964915  1.171185  1.288162  1.588419  2.327292  2.388297
+0.953674  1.102888  1.263755  1.835591  2.316855  2.424820
+0.886544  1.074635  1.242245  1.964445  2.296815  2.412946
+0.853009  1.077083  1.184534  1.752324  2.283038  2.389217
+0.840278  1.033222  1.152546  1.520954  2.333984  2.454533
+0.910770  1.083873  1.223537  1.668076  2.346235  2.511845
+0.967915  1.121818  1.220258  1.806588  2.421129  2.498176
+0.992265  1.169069  1.260049  1.679990  2.398939  2.459143
+1.065276  1.230957  1.322385  1.753477  2.314399  2.415925
+1.081305  1.271782  1.458008  1.729400  2.332304  2.405121
+1.017815  1.349087  1.515836  1.721892  2.292963  2.398991
+1.097652  1.332937  1.570030  1.776462  2.377274  2.465894
+1.147644  1.302495  1.640156  1.797044  2.363880  2.474795
+1.127168  1.322009  1.684884  1.796463  2.407050  2.578659
+1.159532  1.266652  1.709552  1.830584  2.438156  2.572425
+1.137105  1.331512  1.749399  1.846000  2.414391  2.511488
+1.121271  1.351105  1.728223  1.846664  2.449211  2.564158
+1.118680  1.261543  1.794458  1.885767  2.429009  2.552772
+1.076991  1.212163  1.727637  1.861263  2.432992  2.564041
+1.082093  1.261697  1.760917  1.858031  2.315851  2.573591
+1.086353  1.279061  1.763123  1.864186  2.380786  2.485297
+0.988401  1.262393  1.737901  1.836710  2.375780  2.492390
+1.074712  1.196202  1.677279  1.806309  2.341401  2.560642
+1.067864  1.265290  1.689350  1.802993  2.401947  2.524062
+1.010475  1.289540  1.652721  1.778727  2.362305  2.466551
+0.977570  1.261308  1.576271  1.741327  2.297622  2.404091
+1.097180  1.464421  1.606664  1.717614  2.330709  2.412068
+1.383838  1.652270  1.898203  2.096608  2.476719  2.574183
+1.279735  1.700611  1.894987  2.029873  2.468395  2.584491
+1.236668  1.683312  1.791059  1.953368  2.533100  2.587084
+1.185052  1.599131  1.853897  1.944925  2.499951  2.572896
+1.163573  1.307316  1.872443  1.953987  2.544667  2.623228
+1.190969  1.449255  1.863288  1.937666  2.525272  2.599969
+1.118547  1.513105  1.856666  1.968822  2.497385  2.575529
+1.156521  1.630926  1.845452  2.051106  2.443167  2.534052
+1.410042  1.541981  2.135508  2.235609  2.575406  2.680553
+1.392791  1.720666  2.034946  2.192456  2.487154  2.653398
+1.581248  1.837838  2.109761  2.187484  2.497898  2.660089
+1.663078  1.901302  2.151665  2.248289  2.534789  2.639793
+1.623160  1.843067  2.177770  2.255312  2.543601  2.681190
+1.539709  1.846069  2.119080  2.315024  2.605425  2.695012
+1.532691  1.805362  2.166180  2.276515  2.582080  2.695324
+1.517203  1.864729  2.111840  2.241033  2.602399  2.678593
+1.481004  1.879771  2.183398  2.258504  2.624580  2.714706
+1.480064  1.947829  2.126591  2.239313  2.602703  2.689760
+1.615747  2.025678  2.188405  2.291472  2.673701  2.723276
+1.546688  2.023668  2.137583  2.233880  2.563573  2.627361
+1.517274  1.902434  2.132410  2.189277  2.548379  2.643352
+1.498762  1.602359  2.159933  2.275665  2.540579  2.682962
+1.573572  1.655201  2.071740  2.214602  2.523447  2.642142
+1.601993  1.680362  2.130147  2.247308  2.567706  2.670568
+1.632928  1.733671  2.134699  2.255127  2.559994  2.682076
+1.707428  1.752059  2.139704  2.252060  2.567637  2.647910
+1.680790  1.812582  2.189235  2.287297  2.578245  2.644737
+1.746130  1.778548  2.119511  2.283392  2.596379  2.686826
+1.680242  1.774944  2.097848  2.213994  2.558507  2.656276
+1.698158  1.777690  2.096918  2.211009  2.512421  2.625627
+1.757218  1.828197  2.092183  2.218630  2.459897  2.653906
+1.768299  1.815758  2.044601  2.174404  2.469800  2.674385
+1.740913  1.830010  2.044499  2.168426  2.442501  2.587668
+1.728988  1.801586  2.036902  2.135694  2.483000  2.647346
+1.740200  1.780349  2.039841  2.116482  2.460078  2.666408
+1.679167  1.810585  1.976200  2.085150  2.330970  2.574697
+1.675383  1.741676  1.986605  2.086988  2.444839  2.648385
+1.605366  1.684640  1.977146  2.084309  2.401376  2.626669
+1.593589  1.667011  1.993079  2.095793  2.477055  2.660517
+1.495436  1.677492  1.915438  2.107516  2.504100  2.687519
+1.371193  1.581007  1.812088  2.159971  2.540808  2.654514
+1.308897  1.652762  1.877696  2.100223  2.498357  2.635266
+1.257546  1.701192  1.908659  2.063978  2.330876  2.588480
+1.260641  1.733829  1.901311  2.046022  2.230421  2.379709
+1.192017  1.695443  1.866332  1.969861  2.131279  2.367813
+1.331300  1.727619  1.875686  1.967226  2.115488  2.461652
+1.221851  1.644785  1.861070  1.957289  2.263788  2.509227
+1.297010  1.684814  1.825106  1.981266  2.388696  2.497940
+1.292992  1.621691  1.795497  1.891584  2.430941  2.597238
+1.293338  1.412441  1.678427  2.013436  2.406265  2.575295
+1.355250  1.470521  1.748288  2.044830  2.411070  2.590823
+1.352085  1.474384  1.811950  2.028535  2.445376  2.597977
+1.380432  1.472981  1.836191  1.957768  2.390372  2.571170
+1.417568  1.514975  1.839991  1.974610  2.382486  2.510706
+1.396329  1.511621  1.743909  2.009524  2.414088  2.533502
+1.355999  1.511197  1.775041  1.973539  2.445398  2.568851
+1.357482  1.533305  1.820633  1.998326  2.395457  2.573696
+1.244544  1.446552  1.726849  1.935995  2.428985  2.555947
+1.206555  1.365874  1.510017  1.809039  2.464853  2.520241
+1.204707  1.340270  1.477154  1.731800  2.461076  2.525822
+1.152135  1.294762  1.429873  1.669780  2.436091  2.504828
+1.122329  1.284669  1.445441  1.811897  2.444467  2.535691
+1.167102  1.311995  1.430682  1.931216  2.579180  2.626367
+1.140963  1.255562  1.416924  1.913114  2.462643  2.552650
+1.175380  1.325094  1.434137  1.826282  2.534111  2.599692
+1.152952  1.311344  1.428753  1.733281  2.499163  2.555417
+1.208942  1.318147  1.450855  1.631131  2.484793  2.560756
+1.214984  1.312305  1.496973  1.602685  2.441060  2.513740
+1.154899  1.274352  1.497828  1.611080  2.493972  2.628464
+1.221737  1.324479  1.529355  1.668502  2.496342  2.572455
+1.265483  1.360436  1.574447  1.698291  2.465872  2.529454
+1.299969  1.411470  1.634331  1.790167  2.464188  2.546209
+1.296816  1.461296  1.674047  1.867297  2.472828  2.546532
+1.319231  1.493029  1.702922  1.867177  2.417583  2.503853
+1.307703  1.511731  1.795464  1.988697  2.415827  2.502063
+1.341439  1.567295  1.849636  2.054411  2.368545  2.484938
+1.346092  1.709857  1.847822  2.089875  2.320388  2.426929
+1.351207  1.582397  1.853947  2.087781  2.269740  2.406134
+1.403409  1.681258  1.930634  2.064741  2.317595  2.445510
+1.303563  1.800429  1.946546  2.064780  2.347899  2.575654
+1.401968  1.795117  2.043851  2.149158  2.337423  2.475421
+1.486349  1.896915  2.033679  2.164583  2.427213  2.516709
+1.581223  1.920360  2.032925  2.186636  2.458825  2.534175
+1.623672  1.949219  2.056949  2.220873  2.544733  2.612737
+1.720081  1.916335  2.069658  2.310061  2.503085  2.592652
+1.652066  1.993905  2.122170  2.282322  2.533728  2.604129
+1.696384  1.990268  2.088659  2.317899  2.562346  2.630795
+1.688613  1.976549  2.085500  2.354425  2.483404  2.567677
+1.791891  1.956617  2.084765  2.344129  2.473213  2.578020
+1.770146  1.955967  2.075143  2.263105  2.508576  2.594808
+1.688172  1.958387  2.097165  2.237127  2.443133  2.558386
+1.614095  1.858106  1.996129  2.151245  2.327315  2.485345
+1.517662  1.729778  1.975388  2.118726  2.390828  2.523423
+1.576388  1.764916  1.937347  2.159436  2.354537  2.476553
+1.596523  1.796717  1.930679  2.173774  2.415264  2.515193
+1.598274  1.758907  1.941525  2.242941  2.461919  2.548378
+1.564588  1.667806  1.910211  2.207508  2.432969  2.562295
+1.502258  1.598757  1.701036  1.993517  2.431658  2.568611
+1.261165  1.379257  1.669436  1.864259  2.424394  2.560278
+1.183142  1.291685  1.496242  1.775091  2.415349  2.571850
+1.176858  1.280643  1.397295  1.556275  2.482609  2.556911
+1.151406  1.269090  1.402613  1.529417  2.547298  2.660723
+1.138350  1.270088  1.386698  1.656508  2.516680  2.570828
+1.167637  1.288387  1.379397  1.815954  2.488744  2.544025
+1.191129  1.318584  1.433056  1.898734  2.440995  2.505523
+1.231547  1.339710  1.505832  1.865461  2.401919  2.567552
+1.249001  1.342543  1.526521  1.644629  2.260060  2.528113
+1.292116  1.385043  1.567293  1.928018  2.343597  2.526727
+1.553055  1.731196  1.875584  2.037623  2.189580  2.433617
+1.556332  1.807351  2.009873  2.134758  2.395110  2.517757
+1.700800  1.862996  2.016062  2.212872  2.465828  2.576608
+1.744516  1.892300  2.042875  2.203697  2.393022  2.529386
+1.614682  1.867043  2.024132  2.172368  2.402152  2.567866
+1.662548  1.926469  2.016222  2.153675  2.544682  2.636605
+1.607737  1.840632  2.036507  2.148869  2.475726  2.623423
+1.542603  1.789412  1.988210  2.133702  2.500071  2.623838
+1.520491  1.854019  1.966284  2.100229  2.465497  2.590987
+1.429100  1.726203  1.958566  2.068736  2.397125  2.578275
+1.230963  1.483915  1.909424  2.037168  2.278162  2.442677
+1.165473  1.402475  1.877668  1.985029  2.337001  2.482301
+1.060649  1.341795  1.891591  1.997803  2.342252  2.473851
+1.045982  1.264410  1.892878  2.028108  2.265711  2.418342
+0.872467  1.318607  1.941288  2.054895  2.265976  2.523000
+0.878165  1.208778  1.863524  2.074171  2.319885  2.460496
+0.871380  1.050930  1.866310  2.044293  2.184267  2.469225
+0.814866  1.206234  1.936241  2.046364  2.243986  2.391005
+0.791495  1.154802  1.950862  2.062225  2.270188  2.497120
+0.734873  1.117496  2.013891  2.146348  2.252079  2.340218
+0.717596  1.113315  2.145116  2.214288  2.350660  2.437091
+0.747897  1.181886  1.982640  2.073387  2.391063  2.461216
+0.814210  1.593704  1.930814  2.051889  2.279916  2.450975
+1.007998  1.635254  1.848698  1.998294  2.264960  2.399367
+1.058125  1.548258  1.725115  1.885874  2.174154  2.386746
+1.065325  1.446828  1.763113  2.061160  2.393931  2.533355
+1.245436  1.513106  1.699869  1.885972  2.163732  2.412556
+1.402218  1.550167  1.679097  2.104476  2.314265  2.464617
+1.439688  1.565541  1.746159  2.175756  2.353179  2.445969
+1.282789  1.467574  1.689789  2.057017  2.299566  2.506538
+1.157513  1.360077  1.531522  1.931682  2.277828  2.387362
+1.127719  1.287186  1.421085  1.844362  2.281074  2.385221
+1.172511  1.317506  1.497831  1.768329  2.327099  2.453399
+1.215615  1.351452  1.554622  1.706859  2.280267  2.410315
+1.162714  1.318505  1.568816  1.757107  2.225559  2.321236
+1.221146  1.364069  1.728202  1.867240  2.149636  2.323430
+1.274525  1.455876  1.651807  1.929882  2.119518  2.245371
+1.324827  1.466657  1.837727  1.982753  2.167839  2.294890
+1.207408  1.463737  1.907228  2.010942  2.187613  2.315377
+1.197505  1.325369  1.903945  2.104257  2.264375  2.406017
+0.964658  1.421326  1.800591  2.075541  2.249667  2.391422
+0.900184  1.419486  1.860531  2.052169  2.204670  2.414730
+0.976462  1.444988  1.837158  1.997086  2.133567  2.303194
+0.943062  1.543803  1.914625  1.993134  2.184650  2.344182
+0.896780  1.426973  1.923545  2.039994  2.257922  2.504524
+0.957615  1.553177  1.862682  2.044650  2.192655  2.484166
+1.024381  1.626871  1.891283  2.041787  2.304775  2.613132
+1.260699  1.570977  1.796922  1.938909  2.457980  2.543689
+1.433872  1.676893  2.020354  2.249287  2.488434  2.619226
+1.427791  1.605308  1.999841  2.197618  2.472581  2.628257
+1.344936  1.547750  2.019906  2.153463  2.482519  2.664904
+1.394553  1.830863  2.075753  2.146704  2.529848  2.662938
+1.393531  1.579984  2.005267  2.068322  2.595828  2.677955
+1.371670  1.501665  2.012362  2.069292  2.605716  2.701205
+1.365970  1.443760  1.893696  2.063362  2.540864  2.635754
+1.392813  1.470933  1.920415  1.985276  2.612047  2.670626
+1.393576  1.502340  1.926492  2.019514  2.571540  2.645701
+1.331438  1.470056  1.844344  1.945539  2.527331  2.620827
+1.280394  1.379998  1.822792  1.927676  2.470720  2.614037
+1.230446  1.394851  1.772237  1.910697  2.494879  2.569172
+1.103766  1.420997  1.742156  1.901028  2.458527  2.544960
+1.070834  1.438456  1.754789  1.827791  2.323725  2.484121
+1.023924  1.522342  1.713716  1.834742  2.289596  2.496846
+1.123843  1.539945  1.766275  1.866623  2.349980  2.441218
+1.046667  1.496581  1.791535  1.859477  2.400747  2.468296
+1.031227  1.504904  1.714267  1.944348  2.365219  2.459437
+1.201184  1.370120  1.882630  2.011333  2.411295  2.510294
+1.249461  1.324457  1.907616  2.059001  2.448619  2.551408
+1.308584  1.403015  1.961155  2.048592  2.475709  2.562469
+1.354357  1.476040  2.008730  2.111323  2.513237  2.591557
+1.415309  1.559632  2.020191  2.107847  2.505348  2.596462
+1.452150  1.536961  2.033461  2.120472  2.473458  2.600239
+1.476159  1.570668  1.981439  2.089874  2.441733  2.574939
+1.532138  1.607322  1.996255  2.099111  2.448993  2.575083
+1.578251  1.670901  1.946452  2.067931  2.484573  2.596033
+1.645992  1.719829  1.908426  2.034805  2.521504  2.630135
+1.675204  1.739089  1.858009  1.951150  2.549621  2.668138
+1.698801  1.740674  1.816221  1.872214  2.552990  2.675039
+1.589313  1.665941  1.751972  1.834254  2.495821  2.663916
+1.443571  1.535057  1.685496  1.788025  2.391781  2.644852
+1.389394  1.597558  1.884291  2.161052  2.453631  2.577281
+1.344693  1.573396  1.949051  2.033207  2.436483  2.650227
+1.340679  1.442192  1.904082  1.992387  2.427510  2.604339
+1.301569  1.363519  1.870210  1.953388  2.445808  2.609366
+1.265637  1.365516  1.838660  1.922174  2.431739  2.552480
+1.291868  1.451067  1.770742  1.900677  2.380488  2.474590
+1.319797  1.502062  1.686208  1.922008  2.291200  2.392613
+1.253224  1.445797  1.591748  1.893558  2.295028  2.381503
+1.171375  1.370630  1.523209  1.825821  2.336350  2.399182
+1.238986  1.365086  1.486833  1.790131  2.302513  2.384222
+1.186490  1.327527  1.463687  1.680778  2.322037  2.402246
+1.160765  1.294904  1.467635  1.613241  2.219663  2.329651
+1.167970  1.312269  1.458793  1.725469  2.182513  2.270653
+1.160491  1.371381  1.546645  1.859914  2.151480  2.267109
+1.060643  1.447736  1.589363  1.762026  2.187949  2.312538
+1.096873  1.449372  1.669939  1.880786  2.205157  2.322919
+0.965471  1.394985  1.664859  1.869740  2.130135  2.272101
+0.992815  1.276232  1.736324  1.883127  2.198488  2.291947
+0.989087  1.348989  1.869284  1.945029  2.217100  2.329616
+0.905850  1.296468  1.839413  1.984491  2.131357  2.261643
+0.913468  1.347104  1.974941  2.056808  2.233065  2.312403
+0.891335  1.518146  1.956057  2.017051  2.234247  2.369537
+0.838007  1.490697  2.017641  2.097784  2.331456  2.417972
+0.918242  1.411219  2.047094  2.157938  2.312207  2.414304
+0.737470  1.475335  2.131705  2.195099  2.336065  2.410088
+0.804454  1.247009  2.183193  2.253103  2.376866  2.457474
+0.910989  1.120584  2.031279  2.134740  2.301672  2.401323
+0.823657  1.023714  1.899299  2.153486  2.278157  2.468898
+0.820197  0.968457  1.655670  2.137310  2.320413  2.442552
+0.901009  1.047635  1.785794  2.126322  2.248142  2.419219
+0.908944  1.151536  1.941268  2.153759  2.287775  2.477861
+1.022921  1.329810  1.973526  2.121196  2.269160  2.496929
+1.008035  1.176565  1.832554  2.130737  2.263094  2.484071
+1.148404  1.261617  1.868165  2.138339  2.287914  2.475774
+1.131641  1.245536  1.746902  2.127206  2.273644  2.439518
+1.105449  1.230686  1.759865  2.023222  2.225896  2.485020
+1.232277  1.363476  1.914876  2.021647  2.314039  2.455927
+1.287966  1.377464  1.853658  2.039634  2.348077  2.502708
+1.285144  1.520789  1.951021  2.053636  2.366537  2.486110
+1.276358  1.656613  1.882329  2.084625  2.430619  2.524004
+1.305701  1.532539  1.861534  2.029161  2.435632  2.519577
+1.295725  1.474840  1.838375  2.045012  2.413018  2.545296
+1.232802  1.307215  1.786758  1.911450  2.533633  2.625793
+1.106012  1.252432  1.737311  1.827401  2.395470  2.658026
+1.080321  1.249736  1.763810  1.842229  2.488083  2.637970
+1.084809  1.302696  1.791104  1.915712  2.532753  2.626979
+1.024077  1.398495  1.758154  1.947685  2.536753  2.647797
+1.052552  1.486524  1.835972  2.013128  2.526539  2.621519
+0.980943  1.528894  1.887706  1.990429  2.559226  2.631730
+0.954706  1.355188  1.890849  1.968743  2.538301  2.645803
+0.894853  1.316420  1.931923  2.000630  2.617822  2.706960
+0.859848  1.166660  1.851854  2.011085  2.629872  2.731061
+0.817565  1.169139  1.975684  2.117069  2.593136  2.683713
+0.776768  0.999874  1.951669  2.126997  2.578530  2.719218
+0.750075  1.105669  2.015241  2.099156  2.469178  2.637879
+0.878438  1.039620  2.078822  2.189100  2.453168  2.610618
+0.915136  1.114879  2.017689  2.236527  2.370275  2.538277
+0.826110  1.208983  2.069074  2.156825  2.331864  2.463067
+0.869876  1.289563  2.061703  2.143050  2.313737  2.395809
+0.790056  1.421058  1.945728  2.025231  2.254924  2.384106
+0.782642  1.678142  1.928308  1.980152  2.169702  2.290020
+0.795940  1.409661  1.767797  1.894756  2.191648  2.280190
+0.832117  1.169093  1.828013  1.911028  2.228646  2.366162
+0.862231  1.189399  1.754948  1.924129  2.312126  2.412551
+1.034774  1.290469  1.783502  1.996158  2.343760  2.462730
+1.135806  1.358791  1.789192  1.980630  2.376359  2.495841
+1.303901  1.414996  1.787505  1.918440  2.435463  2.547746
+1.489246  1.592963  1.850578  1.950051  2.428039  2.571337
+1.631472  1.742640  1.887885  1.994933  2.493769  2.619665
+1.683853  1.800379  1.926611  2.064050  2.509149  2.592626
+1.745313  1.854259  1.988545  2.117137  2.504306  2.611340
+1.764270  1.890575  2.037993  2.174299  2.507724  2.600610
+1.680174  1.817366  1.937110  2.228976  2.550139  2.623314
+1.552625  1.819462  1.957322  2.263495  2.517281  2.580506
+1.558425  1.784912  2.021491  2.239374  2.543712  2.637456
+1.240665  1.739293  1.889814  2.105082  2.532436  2.618228
+0.928972  1.440269  1.769258  1.853352  2.400406  2.636877
+1.055767  1.488842  1.756065  1.832574  2.209682  2.650309
+1.013301  1.381032  1.704087  1.772713  2.155486  2.585135
+1.009186  1.333235  1.741382  1.846496  2.158765  2.517761
+1.006381  1.519900  1.813751  1.916290  2.407674  2.581853
+1.357730  1.530547  1.883639  2.141513  2.463268  2.614627
+1.426823  1.560875  1.882518  2.175206  2.488354  2.628703
+1.315984  1.579838  1.859556  2.083481  2.419884  2.564645
+1.213050  1.538899  1.800250  1.882067  2.341570  2.574606
+1.275056  1.543507  1.917099  2.127451  2.388939  2.542721
+1.438943  1.698143  1.856610  2.075189  2.266712  2.437372
+1.454331  1.663763  1.869820  2.011414  2.366272  2.533385
+1.382166  1.672920  1.827442  1.942032  2.453906  2.559856
+1.400656  1.585453  1.841334  2.002744  2.426997  2.517756
+1.382144  1.688087  1.819756  2.063153  2.417793  2.492551
+1.255095  1.603378  1.753915  2.047569  2.455562  2.569585
+1.134783  1.409147  1.705283  1.802106  2.488030  2.647140
+1.111876  1.260129  1.676050  1.778495  2.501588  2.627003
+1.060347  1.208811  1.660354  1.776864  2.488758  2.604456
+0.947120  1.164647  1.642037  1.723789  2.475156  2.567411
+0.902077  1.251204  1.664026  1.769008  2.499003  2.576704
+0.920170  1.243894  1.709681  1.794989  2.534352  2.623833
+0.938770  1.267684  1.725861  1.870157  2.549512  2.628197
+0.914357  1.254315  1.712915  1.784742  2.590431  2.707485
+0.930246  1.281241  1.802793  1.878861  2.560218  2.687216
+0.955350  1.148671  1.814732  1.902586  2.557821  2.684594
+0.968330  1.098589  1.813440  1.911875  2.463136  2.646490
+0.990311  1.185444  1.864673  1.941589  2.488112  2.664465
+1.186903  1.590929  1.954158  2.033697  2.597861  2.662179
+1.302643  1.694423  1.997444  2.169046  2.617414  2.693079
+1.379258  1.718278  1.993219  2.212202  2.543730  2.640859
+1.405165  1.780534  1.997893  2.151147  2.555776  2.632215
+1.297766  1.878255  2.020268  2.190566  2.546467  2.617338
+1.442158  1.856645  2.101038  2.299709  2.561481  2.644123
+1.370167  1.781207  2.114991  2.251821  2.446751  2.549845
+1.403451  1.703568  2.079302  2.221399  2.448766  2.593978
+1.413349  1.649169  2.009976  2.159164  2.518675  2.615138
+1.326655  1.719941  1.950443  2.025468  2.521068  2.635953
+1.385954  1.552749  1.856784  1.937506  2.496646  2.580159
+1.345409  1.488014  1.885538  2.017189  2.546874  2.625597
+1.335716  1.420210  1.787067  1.976842  2.501334  2.643553
+1.303803  1.408266  1.801454  1.901471  2.375048  2.575946
+1.312907  1.408086  1.837981  1.950093  2.318536  2.475897
+1.193613  1.293642  1.819061  1.974492  2.468077  2.585285
+1.191527  1.311470  1.711629  1.854585  2.395044  2.554024
+1.103176  1.332165  1.717922  1.857994  2.340287  2.445217
+0.996011  1.234172  1.751022  1.868274  2.285877  2.406723
+1.055311  1.378240  1.712116  1.841673  2.206702  2.440537
+1.078611  1.465910  1.787009  1.948977  2.231741  2.478981
+0.984520  1.420593  1.815304  1.925218  2.263433  2.430940
+0.984574  1.495178  1.774189  1.964126  2.221656  2.346849
+1.154842  1.507200  1.812101  1.949371  2.281741  2.426097
+1.170058  1.429376  1.745091  1.937927  2.235016  2.374769
+1.206485  1.487526  1.767298  2.009836  2.207048  2.339471
+1.073656  1.377733  1.828679  1.993004  2.130615  2.256776
+1.088454  1.495385  1.907767  1.996871  2.213903  2.390489
+1.122976  1.422213  1.865827  2.037113  2.253747  2.418388
+1.134166  1.382636  1.804236  1.963200  2.161170  2.473602
+1.245397  1.552607  1.960811  2.134690  2.453597  2.577539
+1.118704  1.567208  1.952615  2.176519  2.446630  2.578556
+1.141708  1.643603  2.013339  2.277434  2.557381  2.634785
+1.392514  1.807925  2.039343  2.237922  2.578023  2.668286
+1.433212  1.833712  2.020620  2.252182  2.518635  2.600857
+1.379262  1.712226  2.024999  2.242965  2.515533  2.602479
+1.366984  1.675637  1.976590  2.199474  2.516967  2.598815
+1.352760  1.801872  2.033607  2.181935  2.491382  2.589883
+1.323663  1.743572  2.009640  2.122701  2.474517  2.566379
+1.190092  1.540538  1.933066  2.088076  2.506726  2.570608
+1.519832  1.766187  1.906004  2.076747  2.261416  2.407680
+1.534691  1.714074  2.016476  2.130902  2.323259  2.457608
+1.522050  1.794760  2.050945  2.218278  2.408013  2.537728
+1.665365  1.906867  2.025658  2.232383  2.430131  2.550641
+1.666299  1.834650  1.998042  2.220240  2.401507  2.502391
+1.523608  1.730092  1.862962  2.164599  2.466262  2.549229
+1.216124  1.503465  1.760462  1.967473  2.381720  2.564350
+1.171128  1.429428  1.616628  1.917782  2.387933  2.477271
+1.091303  1.351374  1.568657  1.796196  2.437587  2.514874
+1.001277  1.386906  1.539603  1.775045  2.413270  2.482152
+0.952227  1.397307  1.527926  1.722524  2.442747  2.492370
+0.824979  1.388886  1.568976  1.735264  2.408751  2.471180
+0.794444  1.433059  1.588848  1.749579  2.489366  2.576364
+0.899067  1.521851  1.681397  1.780293  2.441748  2.508286
+0.922249  1.464613  1.592525  1.828442  2.418162  2.477264
+0.871556  1.444421  1.538321  1.889009  2.353691  2.412544
+0.857823  1.270248  1.501265  1.760257  2.355761  2.407297
+0.846263  1.176606  1.481984  1.614166  2.369933  2.485687
+0.882414  1.176092  1.377969  1.497390  2.380010  2.516508
+0.938718  1.100648  1.489109  1.576205  2.325566  2.543468
+0.932462  1.105586  1.294346  1.470956  2.400120  2.554718
+0.945253  1.161000  1.303877  1.580262  2.466680  2.584612
+1.018317  1.214740  1.330580  1.683749  2.482961  2.557157
+1.048240  1.175481  1.258095  1.599087  2.521448  2.642499
+1.073739  1.203513  1.298705  1.688758  2.555683  2.614473
+1.096788  1.260856  1.368595  1.755340  2.493034  2.606453
+1.105643  1.227026  1.404391  1.849702  2.523314  2.601568
+1.143864  1.269393  1.387340  1.829083  2.395167  2.496463
+1.099246  1.228614  1.344408  1.664420  2.440626  2.518066
+1.116181  1.228322  1.332947  1.667312  2.331673  2.512262
+1.201517  1.299388  1.478475  1.577915  2.003307  2.451583
+1.167995  1.292729  1.470730  1.814621  2.140965  2.436146
+1.280521  1.424881  1.595211  1.803880  2.205832  2.315376
+1.230157  1.364939  1.610435  2.002513  2.172872  2.355721
+1.302555  1.400606  1.734329  2.074003  2.208548  2.389274
+1.512686  1.818227  2.144783  2.266917  2.447736  2.569392
+1.507528  1.760422  2.164228  2.276872  2.479494  2.624837
+1.446511  1.760436  2.114696  2.256700  2.572570  2.661468
+1.468868  1.812355  2.114567  2.193023  2.617745  2.713842
+1.449647  1.776448  2.080604  2.210155  2.540909  2.713991
+1.441252  1.719517  2.114612  2.218690  2.511304  2.660049
+1.477657  1.619839  2.112699  2.198704  2.520599  2.655696
+1.532866  1.718145  2.132629  2.222301  2.551440  2.665729
+1.341030  1.814584  2.125039  2.245863  2.547976  2.649591
+1.361910  1.698086  2.076920  2.255113  2.524884  2.647043
+1.315333  1.592772  2.109776  2.210194  2.517745  2.666968
+1.382801  1.571593  2.106842  2.204058  2.495197  2.661417
+1.453626  1.641746  2.100313  2.199368  2.462404  2.608881
+1.376104  1.646574  1.987188  2.218409  2.413618  2.526810
+1.372839  1.632461  2.056237  2.163721  2.376186  2.586874
+1.432614  1.624632  2.074174  2.119889  2.480656  2.669026
+1.410683  1.662804  2.069219  2.130369  2.581373  2.714005
+1.174126  1.524516  2.032046  2.105255  2.502385  2.653307
+1.150832  1.249780  2.004788  2.158226  2.317980  2.588167
+1.057643  1.199724  2.043666  2.165479  2.371022  2.608171
+1.070330  1.169192  2.051065  2.187195  2.476449  2.671328
+0.989962  1.100883  1.959715  2.107656  2.451860  2.659328
+0.995945  1.125081  1.967729  2.171051  2.352755  2.586378
+0.951054  1.073408  1.768679  2.213097  2.362509  2.504270
+0.912647  1.063629  1.874306  2.209354  2.347793  2.515052
+0.880146  1.057702  1.939506  2.298197  2.447874  2.559719
+0.808391  0.999903  1.789456  2.221085  2.383243  2.512098
+0.872797  1.051306  1.907981  2.345885  2.551438  2.620384
+0.736864  0.925226  2.101552  2.273865  2.392948  2.568863
+0.704727  1.026198  2.094726  2.212489  2.474164  2.656197
+0.793545  1.029482  1.901019  2.333682  2.650248  2.721424
+0.890709  1.270067  2.139854  2.238320  2.544384  2.711324
+0.971655  1.317691  2.245472  2.351092  2.631963  2.711259
+1.080789  1.555771  2.010618  2.245992  2.528408  2.644890
+1.409512  1.769321  2.106696  2.284262  2.512254  2.638336
+1.248437  1.661986  2.035140  2.283241  2.534287  2.647326
+0.952460  1.123797  2.103484  2.258075  2.394744  2.604571
+0.989645  1.181656  2.023429  2.237371  2.369517  2.522527
+0.926042  1.348117  1.949341  2.062080  2.346962  2.449077
+0.919696  1.405301  1.834047  2.099696  2.376206  2.493394
+1.000811  1.371649  1.836653  2.224095  2.410108  2.539296
+1.200088  1.436788  1.839151  2.179281  2.398849  2.498430
+1.223520  1.486412  1.943988  2.252258  2.407325  2.540679
+1.113671  1.477208  1.844163  2.218008  2.381333  2.486877
+1.138107  1.498752  1.980951  2.297474  2.457848  2.560767
+1.146154  1.614539  1.898903  2.232476  2.416572  2.510958
+1.119673  1.589916  1.824415  2.111914  2.354760  2.453276
+1.032037  1.589416  1.852847  2.142988  2.324001  2.472943
+0.989427  1.528982  1.914645  2.179193  2.376737  2.494371
+1.095755  1.494564  1.866122  2.136805  2.283713  2.464058
+0.834557  1.463722  1.882565  2.150927  2.378636  2.463091
+0.835589  1.296069  1.771371  2.098776  2.286243  2.426378
+0.806577  1.403328  1.685216  2.040945  2.235736  2.356401
+0.800011  1.383092  1.814158  1.959934  2.309583  2.386791
+0.804745  1.318210  1.821360  1.908703  2.235131  2.427141
+0.895849  1.367225  1.864812  1.979670  2.324237  2.420788
+0.827390  1.425085  1.767158  2.058185  2.376232  2.469430
+0.917915  1.497920  1.855338  1.987207  2.315382  2.451640
+0.940855  1.409563  1.789190  1.988531  2.336666  2.534686
+0.972711  1.291697  1.786937  1.914881  2.323264  2.405491
+0.993281  1.368817  1.807237  1.958622  2.357274  2.459276
+1.074694  1.349312  1.840844  1.954844  2.269081  2.384056
+1.100597  1.218573  1.756134  1.900188  2.277874  2.406215
+1.165622  1.313695  1.843695  1.962222  2.157100  2.342911
+1.157768  1.372357  1.879963  1.991928  2.258080  2.390865
+1.286092  1.780986  1.959702  2.118874  2.324541  2.437595
+1.455169  1.738149  2.098885  2.235010  2.428464  2.539714
+1.500252  1.684257  2.161002  2.272591  2.399078  2.510334
+1.485672  1.846402  2.195717  2.305655  2.546282  2.650594
+1.727818  2.013707  2.167283  2.304214  2.586608  2.652160
+1.676773  1.960528  2.217006  2.368813  2.598284  2.681624
+1.631959  1.915752  2.227040  2.335178  2.603101  2.710218
+1.663857  1.973017  2.124709  2.222354  2.660483  2.724322
+1.542011  1.929582  2.075601  2.170628  2.628551  2.707745
+1.509689  1.706046  2.056908  2.197674  2.578326  2.653903
+1.482072  1.673728  2.131047  2.194868  2.586319  2.690293
+1.423447  1.643267  2.092317  2.178941  2.527205  2.636748
+1.355154  1.565169  2.023932  2.236487  2.538323  2.655495
+1.328421  1.553976  2.081558  2.161922  2.472742  2.656928
+1.330758  1.419042  2.026707  2.129051  2.367999  2.571017
+1.270648  1.377593  2.025948  2.140131  2.389237  2.575945
+1.236825  1.345428  2.022395  2.109848  2.478126  2.633911
+1.222076  1.320425  1.939670  2.021742  2.436807  2.628532
+1.252172  1.358274  1.972621  2.079346  2.371453  2.598928
+1.266234  1.470203  1.930446  2.145813  2.471858  2.618153
+1.332281  1.546411  2.025723  2.219524  2.464616  2.645111
+1.418604  1.649476  2.008305  2.128114  2.489878  2.676868
+1.455677  1.684682  1.988976  2.152647  2.470396  2.651526
+1.447490  1.600650  1.935900  2.271764  2.512990  2.631833
+1.444770  1.556361  2.020377  2.282318  2.475768  2.612336
+1.387476  1.487406  2.024679  2.244659  2.445046  2.582829
+1.353922  1.443279  1.957555  2.171307  2.336106  2.560084
+1.369786  1.447714  2.006181  2.191416  2.404713  2.604727
+1.425956  1.504279  2.072312  2.178177  2.417663  2.603411
+1.440235  1.540501  2.082397  2.211979  2.377070  2.637315
+1.497010  1.582681  2.056522  2.172175  2.389278  2.593845
+1.504963  1.584564  1.984094  2.149333  2.367563  2.559723
+1.519045  1.603989  1.993800  2.109929  2.327255  2.599694
+1.569559  1.651048  1.988942  2.116726  2.345772  2.569917
+1.569894  1.683682  1.980575  2.182917  2.357234  2.587282
+1.607074  1.712704  1.951468  2.125681  2.307168  2.547246
+1.645231  1.736599  1.952360  2.131487  2.376223  2.606463
+1.669612  1.763984  1.979653  2.173233  2.332349  2.516667
+1.632436  1.758871  1.980800  2.124271  2.285899  2.443828
+1.557406  1.667695  1.902055  2.106931  2.260859  2.483917
+1.470421  1.688945  1.846379  2.032834  2.185130  2.375868
+1.421944  1.531479  1.825667  2.026592  2.180382  2.360115
+1.385644  1.606158  1.846365  2.071388  2.488500  2.607454
+1.359715  1.577664  1.897105  2.111958  2.471108  2.603005
+1.339447  1.542640  1.933966  2.133741  2.454906  2.583194
+1.325808  1.691761  2.080233  2.164213  2.474164  2.605215
+1.347146  1.624704  2.074108  2.214395  2.430593  2.562946
+1.314857  1.541837  1.967631  2.164145  2.372693  2.606516
+1.312898  1.534081  1.917285  2.089949  2.411610  2.570672
+1.283019  1.557401  1.937879  2.103338  2.520615  2.623700
+1.138825  1.337472  1.871092  1.972746  2.433484  2.647653
+1.155936  1.281125  1.831346  1.919243  2.266602  2.600943
+1.166841  1.273824  1.843198  1.946026  2.318377  2.578792
+1.172291  1.275007  1.832581  2.025917  2.353813  2.624686
+1.082157  1.265436  1.892357  1.989008  2.383161  2.601421
+1.091903  1.208823  1.835009  2.034461  2.394722  2.562904
+1.098835  1.199487  1.757650  2.065888  2.390403  2.578893
+1.132798  1.244386  1.876625  2.071549  2.339183  2.537916
+1.180603  1.259469  1.823163  2.095055  2.256898  2.542724
+1.186987  1.312908  1.800793  2.105036  2.366989  2.496082
+1.266390  1.377139  1.810434  2.113272  2.329619  2.533152
+1.323586  1.404515  1.904242  2.145928  2.386113  2.580936
+1.352171  1.451401  1.949824  2.077051  2.390820  2.538573
+1.343859  1.452231  1.889889  2.026744  2.317477  2.482486
+1.244808  1.378854  1.792557  1.986745  2.422571  2.536950
+1.124619  1.253596  1.703825  1.951315  2.439640  2.545147
+0.995104  1.411750  1.728505  1.861639  2.456605  2.544957
+1.001072  1.409106  1.797727  1.897572  2.409482  2.555324
+1.033981  1.428160  1.786944  1.880286  2.326359  2.503159
+0.970169  1.320721  1.716642  1.841569  2.220200  2.388916
+0.930477  1.373382  1.798398  1.904734  2.305786  2.525304
+0.939935  1.418455  1.772704  1.878087  2.367491  2.461526
+0.949116  1.527114  1.765903  1.840735  2.164926  2.474337
+0.993353  1.629343  1.813445  1.910215  2.100772  2.492902
+1.013830  1.549621  1.796834  1.891936  2.239760  2.556346
+0.970121  1.509802  1.834006  1.938978  2.338575  2.504346
+0.947238  1.361377  1.783553  1.984713  2.423900  2.547178
+0.980991  1.388783  1.783307  2.131708  2.454635  2.558692
+1.002668  1.402339  1.807195  2.024461  2.464418  2.554280
+1.010697  1.404186  1.872558  2.079362  2.479332  2.569625
+0.972976  1.375802  1.843367  1.980698  2.513609  2.578272
+0.932062  1.277676  1.851126  1.985878  2.466286  2.566260
+0.938577  1.181150  1.833964  1.965034  2.458011  2.550532
+0.940095  1.145447  1.796688  2.078273  2.482897  2.610630
+0.909789  1.074084  1.717403  2.139110  2.462525  2.572261
+0.882446  1.066652  1.729556  2.284662  2.478899  2.555022
+0.938178  1.121504  1.828485  2.234041  2.474778  2.557100
+0.917165  1.283072  1.779497  2.100290  2.475831  2.590182
+1.062938  1.349043  1.762759  2.118297  2.504806  2.606788
+1.186965  1.461900  1.889039  2.112738  2.481323  2.621310
+1.480720  1.619232  1.979483  2.177103  2.436476  2.578983
+1.448723  1.566337  1.880134  2.138534  2.339676  2.554594
+1.407995  1.613546  1.828927  2.052703  2.344501  2.538078
+1.616019  1.691006  1.856347  1.980078  2.548246  2.637759
+1.628171  1.684163  1.886153  2.012867  2.563772  2.621577
+1.595743  1.688011  1.935400  2.025813  2.483630  2.616820
+1.641560  1.708656  1.955460  2.046989  2.519834  2.645741
+1.673668  1.752213  1.951288  2.080918  2.487394  2.640725
+1.656417  1.736239  1.991365  2.098321  2.571908  2.676827
+1.659820  1.732449  1.951246  2.077020  2.581642  2.693515
+1.654803  1.716207  1.966639  2.044230  2.563251  2.680200
+1.602729  1.682614  1.917410  1.994825  2.531087  2.673289
+1.582550  1.639535  1.926100  1.992074  2.532073  2.697110
+1.462370  1.585004  1.818300  1.897553  2.557132  2.706256
+1.453199  1.550734  1.815192  1.916461  2.399968  2.667684
+1.419387  1.557717  1.784441  1.909176  2.511382  2.669980
+1.395165  1.539820  1.847477  1.930837  2.583961  2.703625
+1.348853  1.610875  1.958146  2.043068  2.586086  2.664353
+1.372390  1.658144  1.958657  2.189437  2.450481  2.650316
+1.352586  1.528092  1.923141  2.194837  2.427729  2.562143
+1.380925  1.612272  1.993385  2.176111  2.508934  2.635056
+1.429580  1.686586  2.017126  2.172565  2.486420  2.609268
+1.392123  1.641039  1.952077  2.065066  2.421215  2.574909
+1.399593  1.788262  1.952093  2.098580  2.489935  2.629393
+1.383756  1.662435  1.983097  2.112236  2.532805  2.631814
+1.372732  1.673625  1.912122  2.134246  2.432996  2.612276
+1.396034  1.642619  1.962634  2.197392  2.521323  2.660686
+1.379360  1.623989  2.069404  2.243124  2.562033  2.668437
+1.338665  1.618629  2.042041  2.195119  2.570159  2.699099
+1.294124  1.712084  2.050162  2.120133  2.607839  2.681695
+1.293254  1.596252  1.993414  2.060041  2.583077  2.664144
+1.209917  1.362665  1.955116  2.028347  2.512957  2.625803
+1.381701  1.706617  2.003167  2.146470  2.500026  2.613009
+1.204671  1.734562  1.928802  2.109687  2.476898  2.549090
+1.114491  1.696319  1.888819  2.043672  2.539268  2.637168
+1.119312  1.601460  1.846733  2.085664  2.577543  2.645353
+1.128747  1.531175  1.858280  2.146770  2.596351  2.688725
+1.130254  1.674654  1.830664  2.172114  2.562554  2.672831
+1.100767  1.644406  1.833225  2.040605  2.599334  2.652288
+1.066968  1.530596  1.768634  2.003323  2.617323  2.678055
+1.063119  1.469356  1.797817  1.881851  2.568187  2.679145
+1.177293  1.703277  1.865510  2.061041  2.481068  2.581444
+1.404135  1.657504  1.927058  2.181851  2.457409  2.580431
+1.428360  1.663538  1.984994  2.183449  2.458664  2.569489
+1.403204  1.667154  1.955094  2.146449  2.462636  2.562658
+1.234126  1.597848  1.917754  2.034440  2.407548  2.560257
+1.224528  1.368625  1.848065  1.924719  2.494949  2.670207
+1.214772  1.588344  1.765811  2.003861  2.526784  2.635964
+1.264884  1.636472  1.825225  2.077058  2.563495  2.679292
+1.269611  1.588977  1.782182  2.095015  2.620415  2.691789
+1.296409  1.504336  1.802915  2.013382  2.605687  2.681621
+1.334375  1.520771  1.796606  1.963884  2.600418  2.703744
+1.397570  1.600583  1.845972  1.940123  2.616223  2.696111
+1.430879  1.559075  1.799241  1.994052  2.598948  2.674700
+1.482115  1.583037  1.807507  1.981426  2.575382  2.684729
+1.464344  1.565621  1.776029  1.917627  2.575000  2.659270
+1.455399  1.538232  1.730658  1.882074  2.563750  2.660443
+1.499577  1.584423  1.688069  1.892068  2.587098  2.688675
+1.479760  1.573703  1.695194  2.024437  2.558177  2.639037
+1.452267  1.547118  1.750567  2.072025  2.537014  2.673786
+1.447379  1.563037  1.794376  2.141633  2.353387  2.502548
+1.351721  1.450714  1.730230  1.991889  2.298349  2.463553
+1.318760  1.414624  1.641985  1.948338  2.326246  2.474291
+1.212051  1.346227  1.685099  1.959885  2.322238  2.512951
+1.209021  1.302946  1.634616  1.930848  2.282912  2.507545
+1.188947  1.292823  1.665660  2.177853  2.373563  2.474293
+1.257542  1.451148  1.836011  2.161476  2.447295  2.596642
+1.253420  1.370197  1.833717  2.244743  2.479769  2.576022
+1.179954  1.302011  1.592154  2.151577  2.455959  2.518120
+1.114477  1.257653  1.411579  2.042361  2.548294  2.620409
+1.099986  1.307070  1.407174  2.159418  2.585914  2.649358
+1.131151  1.246857  1.401279  2.116604  2.483756  2.546663
+1.173775  1.340865  1.449901  2.093705  2.561030  2.626482
+1.189575  1.346203  1.465586  2.003540  2.517749  2.575697
+1.217965  1.302991  1.569488  2.028970  2.455729  2.550140
+1.231915  1.393228  1.520464  1.955734  2.476226  2.642241
+1.277177  1.451138  1.591018  1.925992  2.458091  2.566561
+1.216236  1.483117  1.688680  1.988972  2.454628  2.599617
+1.184293  1.553039  1.838890  2.100265  2.385006  2.550049
+1.239174  1.792822  1.959073  2.182600  2.445294  2.529569
+1.624571  1.860854  2.120332  2.219916  2.429410  2.594102
+1.753243  1.889331  2.136521  2.254574  2.436331  2.562459
+1.757269  1.956924  2.242335  2.360108  2.493739  2.587626
+1.806843  1.985195  2.197761  2.338682  2.496335  2.600682
+1.859905  2.030422  2.282537  2.396000  2.548595  2.632629
+1.771104  1.896134  2.306763  2.421261  2.538338  2.625956
+1.505646  1.893235  2.019328  2.325790  2.487965  2.585530
+1.189137  1.771099  1.915068  2.254873  2.534430  2.612783
+1.103999  1.649346  1.834993  1.935938  2.534134  2.651998
+1.079006  1.522445  1.767276  1.934965  2.523135  2.596389
+1.106210  1.608040  1.751444  2.008392  2.491731  2.577152
+1.225135  1.597265  1.857833  2.103611  2.465420  2.593047
+1.375366  1.618359  1.930516  2.214454  2.445564  2.576198
+1.429991  1.698975  1.982144  2.233337  2.490443  2.605353
+1.482797  1.679463  1.997759  2.222400  2.464577  2.586822
+1.407997  1.676636  1.970849  2.221085  2.440364  2.592428
+1.279905  1.618797  1.920986  2.161088  2.438805  2.627424
+0.936959  1.310295  1.663367  2.010101  2.515991  2.597781
+1.014662  1.401511  1.590078  2.080875  2.556905  2.622152
+1.043648  1.384572  1.571501  1.988231  2.568660  2.647893
+1.107266  1.413973  1.562057  1.877144  2.554722  2.637289
+1.179476  1.467385  1.605003  1.839003  2.523485  2.640499
+1.218315  1.412023  1.591634  1.796526  2.519799  2.660570
+1.305370  1.427385  1.614577  1.763694  2.497267  2.657791
+1.338542  1.456340  1.642200  1.862353  2.448789  2.631625
+1.328675  1.442223  1.575230  1.858910  2.470665  2.570433
+1.351215  1.466285  1.601432  1.863743  2.425253  2.500336
+1.360914  1.476484  1.624624  1.832107  2.486273  2.563333
+1.401730  1.499881  1.613403  1.749733  2.423219  2.591408
+1.261551  1.402991  1.523781  1.802043  2.499740  2.605532
+1.160005  1.467049  1.605598  1.787691  2.508050  2.557362
+1.279521  1.535093  1.620574  1.758619  2.409621  2.676419
+1.161358  1.505461  1.626199  1.733096  2.398831  2.617482
+1.184633  1.528528  1.614286  1.698210  2.350337  2.667102
+1.117350  1.538074  1.658450  1.759625  2.281261  2.580678
+1.109838  1.492830  1.701966  1.789832  2.151236  2.489725
+1.010233  1.467118  1.631090  1.886421  2.420021  2.522779
+0.950861  1.336887  1.617005  1.789550  2.449618  2.528894
+1.028468  1.348095  1.571888  1.880393  2.543912  2.608014
+1.110746  1.415658  1.690546  2.005512  2.558177  2.650097
+1.110147  1.432665  1.669404  1.901594  2.516926  2.602743
+1.067829  1.543381  1.719440  1.979004  2.543666  2.617575
+1.422545  1.701061  1.940427  2.327061  2.557612  2.642956
+1.386122  1.781934  2.040679  2.383895  2.573951  2.633463
+1.512775  1.696332  2.184500  2.295985  2.578995  2.677261
+1.571845  1.705242  2.225227  2.319189  2.542604  2.676163
+1.514913  1.844285  2.247341  2.361592  2.529071  2.653297
+1.603580  1.948417  2.271813  2.429600  2.528208  2.617731
+1.620409  2.024184  2.379020  2.477983  2.622963  2.670765
+1.578823  1.906347  2.238314  2.378843  2.556955  2.647118
+1.611136  1.900666  2.185777  2.317384  2.517010  2.610141
+1.554611  1.941431  2.133055  2.249862  2.491762  2.571608
+1.469621  1.918901  2.094184  2.225177  2.490350  2.564343
+1.335366  1.697214  2.017085  2.232317  2.474337  2.571016
+1.221936  1.519055  1.814063  2.129404  2.458290  2.560125
+1.193348  1.426044  1.731637  2.009086  2.485687  2.566097
+1.140861  1.304138  1.724072  1.962123  2.456816  2.673582
+1.171988  1.316998  1.756942  2.050812  2.520621  2.679355
+1.135139  1.410213  1.715289  2.092595  2.499448  2.617713
+1.114534  1.487214  1.595404  2.013785  2.531961  2.628395
+1.185163  1.399888  1.582655  2.195793  2.518380  2.582468
+1.104552  1.423680  1.656289  2.262530  2.593187  2.664012
+1.164305  1.596992  1.717746  2.207846  2.563155  2.621398
+1.022593  1.596460  1.831763  2.287975  2.519037  2.580420
+0.920067  1.656499  1.829222  2.207172  2.535598  2.582536
+0.940069  1.577439  1.960575  2.189248  2.482820  2.549330
+0.824619  1.708493  1.932229  2.188611  2.551880  2.605484
+0.819752  1.688971  1.950607  2.083451  2.463192  2.515870
+0.820934  1.718478  2.021631  2.158415  2.521119  2.576288
+0.860984  1.615689  2.046857  2.146219  2.469888  2.571061
+0.722400  1.647372  1.973155  2.066104  2.438838  2.609071
+0.853506  1.577947  1.949855  2.082839  2.448741  2.512425
+0.745605  1.464510  1.993321  2.077513  2.469178  2.532474
+0.710718  1.533693  1.890047  2.013877  2.425598  2.516390
+0.877569  1.511979  1.831605  2.031903  2.441617  2.517441
+1.259618  1.519519  1.879696  2.138828  2.450290  2.614072
+1.326658  1.670099  1.919340  2.148365  2.362928  2.464453
+1.437714  1.671637  1.955052  2.166713  2.405950  2.557523
+1.603868  1.740291  1.989945  2.198778  2.467525  2.585653
+1.638499  1.743252  2.051089  2.149707  2.462625  2.569332
+1.631833  1.721768  2.002918  2.131145  2.438931  2.569221
+1.603157  1.763192  2.082194  2.174769  2.376719  2.502259
+1.630977  1.703944  2.009215  2.149268  2.369179  2.580570
+1.576599  1.658687  1.922940  2.124950  2.448734  2.578273
+1.516265  1.630706  1.860803  2.127036  2.444402  2.582277
+1.458879  1.547626  1.796080  2.046972  2.378056  2.535592
+1.376657  1.512511  1.733562  2.098209  2.361768  2.452137
+1.134749  1.320184  1.582547  2.052886  2.449062  2.527062
+1.079447  1.164059  1.573367  2.220764  2.500300  2.560928
+1.060468  1.186417  1.456658  2.155790  2.437004  2.526903
+0.974645  1.132811  1.563530  2.089864  2.504612  2.571780
+0.925733  1.049035  1.555693  2.095444  2.541677  2.614171
+1.012861  1.154680  1.283807  2.126165  2.558786  2.595811
+0.970704  1.088894  1.398803  1.969666  2.517460  2.621486
+0.996670  1.155602  1.284230  1.967741  2.478048  2.536750
+1.061875  1.172759  1.296847  1.890131  2.465313  2.550488
+0.971133  1.146895  1.425088  1.823656  2.310199  2.513193
+1.122316  1.246948  1.573931  1.945863  2.350666  2.546107
+1.130444  1.281802  1.711748  2.052845  2.471168  2.568969
+1.285794  1.425185  1.874398  2.085225  2.426111  2.576993
+1.273537  1.490213  1.878772  2.106249  2.402449  2.544368
+1.224244  1.462476  1.904611  2.128189  2.416565  2.570019
+1.252061  1.449849  1.802510  2.119875  2.418885  2.518798
+1.327124  1.417585  1.789962  2.174930  2.340651  2.468715
+1.346777  1.435555  1.734308  2.036035  2.356552  2.531051
+1.235820  1.315959  1.597124  1.897870  2.284217  2.575948
+0.955415  1.303770  1.560187  1.730070  2.449775  2.648120
+0.909089  1.471674  1.624478  1.890973  2.389653  2.627950
+0.919631  1.366873  1.506021  1.842587  2.342002  2.554492
+0.855197  1.279671  1.539553  1.688524  2.386911  2.502065
+0.807057  1.135620  1.541600  1.681299  2.243913  2.510869
+0.849115  1.190235  1.449935  1.541388  2.302579  2.655596
+0.832569  1.273363  1.592481  1.792808  2.284175  2.498482
+0.835449  1.168916  1.544629  1.718930  2.423889  2.632619
+0.826578  1.276188  1.407857  1.660287  2.378044  2.474526
+0.873632  1.360315  1.502868  1.758332  2.570802  2.712262
+0.828320  1.284633  1.462407  1.624198  2.575860  2.705612
+0.866930  1.133312  1.254056  1.429890  2.499289  2.562307
+0.807119  1.218080  1.346012  1.540621  2.487606  2.633103
+0.983680  1.146576  1.336648  1.479310  2.327156  2.614361
+0.991742  1.170728  1.296168  1.485606  2.543050  2.663819
+0.857243  1.172195  1.298593  1.623901  2.581253  2.675646
+1.024459  1.245164  1.335833  1.923956  2.623488  2.689817
+1.035260  1.293064  1.419811  1.882694  2.474976  2.673673
+0.981160  1.239841  1.334553  1.628448  2.544049  2.681735
+0.948338  1.227389  1.360095  1.572061  2.447980  2.668611
+1.097120  1.256099  1.362188  1.632542  2.507787  2.656424
+1.060738  1.283998  1.527933  1.676274  2.540944  2.638141
+0.999111  1.230695  1.531258  1.643979  2.373065  2.634336
+0.900037  1.357157  1.519901  1.691155  2.333453  2.605899
+0.906535  1.200477  1.615255  1.715962  2.288870  2.609565
+0.841267  1.337701  1.721187  1.799125  2.176356  2.627236
+0.950819  1.507117  1.718816  1.826725  2.050526  2.489892
+0.922437  1.447590  1.832061  1.920513  2.148990  2.509573
+0.797637  1.120473  1.756266  1.946112  2.209112  2.535941
+0.821846  1.168739  1.837911  1.977726  2.361612  2.642410
+0.802821  1.394640  1.945588  2.031517  2.337491  2.589953
+0.808599  1.214285  1.878529  2.002325  2.280219  2.577779
+0.825133  1.329296  1.896620  1.979559  2.455746  2.573104
+0.847939  1.235948  1.897295  2.016610  2.422214  2.651151
+0.793266  1.311794  1.885265  1.974869  2.493916  2.699921
+0.835729  1.418115  1.839725  1.903232  2.507962  2.645131
+0.849380  1.476197  1.836815  1.977378  2.321338  2.561101
+0.774570  1.284607  1.758190  1.864424  2.367732  2.561205
+0.896154  1.466437  1.770222  1.871354  2.586553  2.688477
+1.097803  1.576496  1.742325  1.910224  2.160666  2.658455
+0.950720  1.452865  1.760158  1.934774  2.196277  2.624191
+0.947778  1.334777  1.745609  1.830510  2.256113  2.667856
+0.970291  1.214911  1.745935  1.840709  2.268780  2.555177
+1.027483  1.193053  1.655411  1.770558  2.115990  2.502962
+1.108625  1.224039  1.556423  1.705900  2.019067  2.463824
+1.137334  1.248642  1.659896  1.835999  2.087298  2.494018
+1.192784  1.290313  1.652861  1.878632  2.086082  2.615960
+1.231829  1.343294  1.528206  1.646125  1.912160  2.354407
+1.043149  1.380698  1.679143  1.830121  2.008367  2.414010
+1.102887  1.243057  1.747479  1.861385  2.203092  2.504381
+1.049734  1.354368  1.735882  1.819000  2.248805  2.557794
+1.105977  1.571421  1.764806  1.953547  2.428854  2.560105
+1.290846  1.550164  1.837562  2.126596  2.488831  2.600779
+1.194236  1.426699  1.837665  1.914014  2.443207  2.635517
+1.165504  1.260088  1.790938  1.893312  2.400453  2.646643
+1.224955  1.308139  1.825926  1.919493  2.321356  2.695079
+1.248486  1.345382  1.775451  1.876708  2.353719  2.654140
+1.271138  1.399667  1.811535  1.897580  2.403493  2.653922
+1.309100  1.407658  1.806843  1.897827  2.339222  2.632347
+1.291018  1.383330  1.802439  1.887187  2.247718  2.662452
+1.261355  1.370512  1.755969  1.871246  2.101895  2.593588
+1.282645  1.376536  1.775534  1.904499  2.192341  2.507429
+1.361360  1.450864  1.791066  1.906164  2.221501  2.543343
+1.334993  1.431384  1.716268  1.905493  2.089197  2.378260
+1.385673  1.470423  1.765397  1.909217  2.173842  2.456572
+1.364318  1.455064  1.754884  1.871473  2.365039  2.572279
+1.387777  1.486887  1.712089  1.847504  2.243563  2.570692
+1.312448  1.425290  1.622893  1.756780  1.978470  2.367512
+1.347202  1.454345  1.683431  1.825472  2.087917  2.462563
+1.326447  1.405443  1.727641  1.835551  2.328868  2.614333
+1.333108  1.429712  1.796075  1.900347  2.445062  2.652912
+1.322803  1.421588  1.736939  1.843495  2.532120  2.646639
+1.344685  1.431856  1.766206  1.924579  2.550076  2.689857
+1.388277  1.485813  1.711960  1.826211  2.496137  2.658495
+1.411133  1.495610  1.776872  1.876674  2.492586  2.651345
+1.417795  1.491577  1.801693  1.890405  2.442446  2.706992
+1.406122  1.515595  1.757336  1.896968  2.382045  2.633633
+1.425860  1.514813  1.773260  1.901744  2.447546  2.634715
+1.476029  1.555032  1.745731  1.861617  2.398766  2.614978
+1.459852  1.561528  1.786445  1.911235  2.476542  2.591787
+1.403056  1.514189  1.720761  1.900939  2.489890  2.577333
+1.428127  1.523512  1.689756  1.835214  2.458899  2.565972
+1.328956  1.434709  1.604068  1.734252  2.466296  2.566835
+1.241317  1.343249  1.457997  1.696624  2.527818  2.645659
+1.136623  1.311125  1.429957  1.695364  2.542525  2.660410
+1.153111  1.344144  1.690808  1.985929  2.420013  2.553782
+1.231755  1.373918  1.668818  2.117444  2.401907  2.488883
+0.978581  1.115592  1.517126  2.000531  2.449025  2.526020
+0.951081  1.107962  1.208612  1.737223  2.474298  2.611849
+0.981806  1.127841  1.220590  1.720985  2.586528  2.698889
+0.977554  1.224067  1.337758  1.713271  2.593374  2.675408
+0.986078  1.260397  1.407440  1.571486  2.569420  2.631754
+1.068774  1.209396  1.464430  1.557978  2.551351  2.669751
+1.034191  1.174307  1.467256  1.555295  2.460490  2.642259
+1.056632  1.178692  1.509897  1.621544  2.153033  2.540535
+1.108939  1.240242  1.651384  1.778538  2.227605  2.571951
+1.040854  1.397785  1.709633  1.830019  2.398698  2.618954
+1.063080  1.564032  1.695538  1.794688  2.419017  2.577353
+1.156653  1.579890  1.742991  1.888966  2.419007  2.626873
+1.282148  1.604674  1.769820  1.984806  2.290529  2.408545
+1.414961  1.752587  1.937904  2.076787  2.287689  2.502281
+1.561586  1.882695  2.087185  2.199871  2.398595  2.509058
+1.741771  1.963051  2.161078  2.262211  2.516056  2.626131
+1.579553  1.916299  2.201667  2.301679  2.458486  2.648337
+1.656200  1.849299  2.101697  2.302170  2.487760  2.573832
+1.761707  1.935887  2.167102  2.423095  2.531309  2.619774
+1.747342  1.946460  2.129719  2.452120  2.591709  2.681100
+1.664774  1.950714  2.064839  2.452925  2.653282  2.719977
+1.182120  1.806988  2.031810  2.240448  2.589338  2.666952
+0.911793  1.444427  1.938199  2.009542  2.518849  2.662424
+0.906235  1.353950  1.860144  1.948940  2.570343  2.653728
+0.915756  1.182444  1.779374  1.918355  2.495182  2.685238
+0.923262  1.168083  1.705447  2.007985  2.401242  2.584424
+0.915338  1.196101  1.641183  1.957797  2.235160  2.502509
+1.116935  1.269153  1.597465  1.950801  2.129101  2.392503
+1.227147  1.344231  1.809259  1.999158  2.320768  2.545770
+1.307876  1.517973  1.832338  2.042156  2.347761  2.543408
+1.142909  1.427477  1.831520  2.022295  2.356478  2.589639
+1.020209  1.202712  1.780168  2.070788  2.565827  2.661648
+1.087846  1.265956  1.653284  2.093962  2.625661  2.709244
+1.146593  1.234170  1.666291  2.022252  2.605716  2.676253
+1.089057  1.311412  1.647149  1.833847  2.666682  2.722762
+1.188386  1.319963  1.725677  1.806948  2.571193  2.664171
+1.209565  1.358036  1.697429  1.794200  2.470455  2.640229
+1.246047  1.338292  1.695538  1.782003  2.565757  2.666941
+1.261251  1.384481  1.619675  1.779584  2.591799  2.712426
+1.337507  1.450232  1.646992  1.774207  2.578969  2.703367
+1.387688  1.478096  1.618920  1.747276  2.531990  2.665704
+1.301779  1.392643  1.541867  1.665649  2.484537  2.655063
+1.257012  1.398833  1.527358  1.734139  2.619531  2.689676
+1.211161  1.324264  1.664338  1.911508  2.589343  2.685254
+1.113028  1.325407  1.697702  1.940185  2.591124  2.679629
+1.000343  1.352231  1.719494  2.024790  2.577661  2.639096
+0.952537  1.564659  1.914580  2.021105  2.481262  2.553572
+0.941380  1.573371  1.898482  1.990822  2.388399  2.527824
+0.835656  1.426857  1.914902  2.006303  2.455843  2.544426
+0.762518  1.617975  1.848163  1.952719  2.511683  2.576889
+0.760103  1.720246  1.884039  1.972497  2.526184  2.668968
+0.788105  1.515939  1.760885  1.953721  2.498661  2.553903
+0.842390  1.235086  1.687435  2.011114  2.391471  2.529546
+0.970555  1.304880  1.689915  2.060096  2.386014  2.524270
+1.078507  1.220815  1.630394  2.103928  2.411414  2.518300
+1.035130  1.374294  1.739516  2.015391  2.383541  2.542893
+1.232775  1.466122  1.942876  2.112602  2.359872  2.476841
+1.032139  1.460157  1.843607  2.111319  2.405612  2.545609
+0.863004  1.575367  1.754339  2.026425  2.484055  2.545871
+0.781880  1.621135  1.876114  2.131620  2.591150  2.665213
+0.689257  1.567671  1.951319  2.246727  2.507788  2.649956
+0.762920  1.454508  2.052137  2.239950  2.408909  2.570384
+0.735313  1.369541  2.141121  2.226737  2.404256  2.515847
+0.692794  1.213217  2.021728  2.170012  2.409789  2.632609
+0.749191  1.327407  1.876305  2.159813  2.396372  2.543556
+0.723514  1.311926  1.779121  2.000990  2.333064  2.521625
+0.800844  1.399334  1.702525  1.886771  2.183805  2.391837
+0.935365  1.532399  1.746103  1.843273  2.027876  2.366925
+0.879717  1.390978  1.696694  1.873227  2.273388  2.532951
+1.115628  1.395380  1.552486  2.062541  2.379745  2.485662
+1.253460  1.379822  1.726521  2.164899  2.386851  2.507812
+1.288652  1.548609  1.769224  2.106137  2.428838  2.517503
+1.369653  1.611147  1.793668  1.970474  2.367649  2.558036
+1.399028  1.694930  1.865624  2.036762  2.409162  2.586430
+1.433335  1.745725  1.930732  2.159385  2.426554  2.579037
+1.267585  1.665867  1.971379  2.103318  2.444523  2.567741
+1.226120  1.497218  1.888612  2.083592  2.547854  2.623475
+1.217864  1.502320  1.850155  1.973913  2.506017  2.625566
+1.213794  1.595369  1.875039  1.979415  2.427150  2.606463
+1.239752  1.513874  1.766680  1.947926  2.281624  2.492074
+1.247634  1.585626  1.729740  1.894696  2.381964  2.522121
+1.201153  1.474465  1.746568  1.834238  2.289729  2.525183
+1.181465  1.555321  1.703604  1.823083  2.315827  2.443888
+1.196327  1.573762  1.735225  1.808031  2.403501  2.557243
+1.149081  1.631606  1.769163  1.925569  2.368122  2.542814
+1.071093  1.633545  1.761338  1.872468  2.408464  2.573521
+1.065230  1.551738  1.713412  1.880487  2.387426  2.512159
+0.987564  1.635727  1.785940  1.956709  2.413400  2.548618
+0.931677  1.526457  1.773013  1.896960  2.437956  2.513898
+0.900322  1.645882  1.787979  2.041039  2.334273  2.434592
+0.867303  1.714715  1.901607  2.099190  2.387096  2.475894
+0.868278  1.693735  1.917301  2.013076  2.274597  2.382531
+0.848816  1.567192  1.829012  1.929834  2.339398  2.425619
+0.789452  1.369290  1.826862  1.917268  2.414283  2.502071
+0.737031  1.173300  1.873028  1.972833  2.455130  2.541243
+0.759015  1.250729  1.781114  1.994631  2.420436  2.554945
+0.749485  1.363939  1.896372  1.993571  2.442257  2.509848
+0.749379  1.214662  1.940660  2.034076  2.450716  2.568302
+0.801242  1.269156  1.870897  1.955986  2.405162  2.473861
+0.823290  1.258951  1.879861  2.069704  2.411773  2.510105
+0.836531  1.273927  1.957305  2.047469  2.490158  2.582295
+0.834116  1.183883  1.886457  1.969193  2.499483  2.604335
+0.876413  1.171153  1.946619  2.030903  2.431350  2.553010
+0.839364  1.056108  1.853641  2.100590  2.392613  2.554339
+0.864173  1.164684  1.835487  1.968845  2.376306  2.516103
+0.932804  1.294569  1.830951  1.901036  2.445265  2.552572
+0.963048  1.356861  1.768829  1.893219  2.479918  2.614673
+1.037066  1.359723  1.820807  1.891047  2.519312  2.605020
+1.060607  1.462340  1.797954  1.939293  2.521868  2.591879
+1.079923  1.504167  1.802208  1.930535  2.465137  2.543195
+1.140112  1.339064  1.813350  1.905307  2.370068  2.530420
+1.151868  1.356167  1.772359  1.883710  2.370014  2.610806
+1.288085  1.638629  1.751055  2.279923  2.555394  2.623279
+1.451442  1.739489  1.916401  2.388700  2.636146  2.702827
+1.591253  1.851544  2.218282  2.385490  2.593754  2.679427
+1.592264  2.016137  2.233799  2.333758  2.544823  2.665169
+1.654199  1.941575  2.250965  2.372366  2.458905  2.599827
+1.703247  2.025498  2.229596  2.337095  2.468575  2.617655
+1.638815  2.005565  2.201946  2.268461  2.499537  2.618409
+1.924675  2.135325  2.458180  2.504168  2.593838  2.625401
+1.803809  2.062572  2.199354  2.289456  2.550039  2.643916
+1.773011  1.976616  2.107571  2.220874  2.444977  2.543841
+1.764952  2.001727  2.214453  2.254705  2.475610  2.579746
+1.678332  1.863913  2.244638  2.343674  2.471126  2.636086
+1.755810  1.860246  2.223719  2.353060  2.498302  2.586676
+1.693433  1.869241  2.283303  2.395805  2.519741  2.583673
+1.704396  1.791207  2.147185  2.336447  2.479029  2.590894
+1.683258  1.862251  2.163335  2.351843  2.520908  2.616034
+1.623219  1.804206  2.222072  2.360296  2.619900  2.699507
+1.657240  1.825612  2.258489  2.347345  2.545732  2.694714
+1.660069  1.860341  2.253569  2.364116  2.564093  2.630731
+1.596899  1.839512  2.218930  2.385793  2.546468  2.625886
+1.622317  1.851201  1.996215  2.377397  2.522071  2.595493
+1.029466  1.254529  1.748991  2.053525  2.445882  2.576112
+0.856689  0.993818  1.569607  2.213756  2.461855  2.547082
+1.016581  1.191900  1.293465  1.778141  2.455802  2.551646
+1.010542  1.228148  1.311431  1.820284  2.531515  2.656752
+0.908278  1.189582  1.285536  1.858600  2.525918  2.619924
+0.871987  1.171922  1.317490  1.826516  2.400744  2.518087
+1.033124  1.188852  1.439697  2.039008  2.572425  2.656103
+0.970197  1.295635  1.402442  2.035038  2.488178  2.549888
+1.088196  1.220650  1.553062  2.133376  2.535702  2.595055
+1.009947  1.389803  1.517057  2.115221  2.474188  2.550693
+0.993372  1.427374  1.539173  1.972396  2.525839  2.583860
+1.048290  1.482084  1.637176  2.161075  2.523169  2.614712
+1.024326  1.562855  1.692237  2.295162  2.594836  2.648573
+0.907692  1.612559  1.746134  2.162536  2.575745  2.616258
+0.890482  1.611128  1.773927  1.970733  2.577746  2.659601
+0.808392  1.597802  1.785959  2.006399  2.565042  2.638957
+0.766474  1.584421  1.835838  1.929741  2.581539  2.641074
+0.769957  1.626769  1.869258  2.029447  2.602778  2.660482
+0.798945  1.531859  1.834894  1.946531  2.628257  2.692621
+0.720628  1.380228  1.817598  1.895348  2.547755  2.607196
+0.717991  1.301269  1.753273  1.880568  2.501113  2.570677
+0.757538  1.197506  1.719315  1.863401  2.467197  2.580754
+0.753702  1.292466  1.691851  1.775796  2.472592  2.583782
+0.814552  1.234200  1.583851  1.688282  2.546255  2.601382
+0.892573  1.259415  1.548665  1.628711  2.465185  2.557477
+0.949846  1.260567  1.429248  1.620283  2.396748  2.457397
+1.035299  1.244100  1.498240  1.643920  2.381366  2.524331
+1.108074  1.337571  1.538192  1.800588  2.513582  2.617693
+1.182535  1.370472  1.561886  1.844157  2.545726  2.614455
+1.215270  1.374402  1.595386  1.940797  2.512277  2.594163
+1.232828  1.356701  1.648355  2.040665  2.518326  2.606889
+1.295532  1.441002  1.626009  2.063594  2.535454  2.607196
+1.317455  1.484169  1.666626  2.107203  2.509460  2.569563
+1.288135  1.404836  1.708442  2.142397  2.478263  2.558149
+1.301178  1.490634  1.688663  2.209739  2.516570  2.582597
+1.388908  1.488602  1.753074  2.249110  2.468447  2.532735
+1.432358  1.501949  1.756043  2.227378  2.540315  2.633816
+1.270629  1.444250  1.697177  2.167736  2.574168  2.667078
+1.377953  1.511825  1.619242  2.070588  2.580573  2.655449
+1.319093  1.437635  1.575159  1.826257  2.568503  2.646941
+1.273340  1.439378  1.614682  1.977816  2.589179  2.642268
+1.364811  1.491437  1.654641  1.914895  2.277580  2.491707
+1.381399  1.482330  1.625703  1.767453  2.292816  2.535410
+1.316122  1.410804  1.574518  1.696495  2.241547  2.544142
+1.249213  1.448411  1.651606  1.812013  2.166941  2.528826
+1.329985  1.430104  1.637785  1.753696  2.144268  2.491734
+1.212008  1.460184  1.663715  1.723968  2.452735  2.654868
+1.154672  1.427992  1.639839  1.703824  2.524782  2.647191
+1.132193  1.276380  1.638189  1.750734  2.360136  2.630237
+1.106796  1.292196  1.563991  1.737151  2.276384  2.673484
+1.009469  1.409199  1.605253  1.755880  2.549809  2.666897
+0.849242  1.424760  1.607336  1.770467  2.593061  2.697570
+0.884126  1.418674  1.690537  1.910365  2.648893  2.753562
+0.835786  1.505326  1.650834  1.839830  2.667508  2.731820
+0.830887  1.418426  1.698221  1.812786  2.546614  2.605179
+0.770144  1.456185  1.735350  1.839787  2.485317  2.539411
+0.741204  1.461201  1.720258  2.039661  2.613149  2.656617
+0.746126  1.436058  1.674916  1.868865  2.616457  2.659599
+0.785082  1.343492  1.675451  1.756554  2.550054  2.611912
+0.745773  1.354824  1.630019  1.938987  2.453600  2.549079
+0.845780  1.469252  1.629079  1.974969  2.499282  2.549783
+0.949421  1.462768  1.572994  2.286043  2.549581  2.602929
+1.025145  1.385363  1.648388  2.192934  2.440628  2.531024
+1.033724  1.436166  1.744094  2.132259  2.544044  2.618903
+1.082839  1.455838  1.597987  2.003093  2.628262  2.736133
+1.021616  1.380799  1.537805  2.007919  2.656179  2.725478
+0.934605  1.338311  1.721281  2.021380  2.452658  2.635942
+0.974987  1.280603  1.740482  1.988643  2.383388  2.588543
+0.963572  1.358626  1.775093  2.077077  2.374408  2.552547
+1.339392  1.606067  1.941038  2.159799  2.446540  2.587306
+1.268637  1.604063  1.940062  2.178915  2.487660  2.597501
+1.129807  1.522621  1.872974  2.075068  2.479707  2.633172
+1.135346  1.422302  1.865991  1.945310  2.523357  2.686142
+1.135540  1.562266  1.768152  1.922013  2.506054  2.736130
+1.173335  1.637622  1.845405  1.974533  2.379511  2.627590
+1.223094  1.477161  1.799506  1.945290  2.603703  2.697773
+1.285652  1.781420  1.972532  2.335252  2.649620  2.719252
+1.516066  1.862470  2.084987  2.386138  2.563370  2.650523
+1.622511  1.800884  2.074682  2.371099  2.494100  2.608952
+1.644218  1.730914  2.235251  2.344625  2.460604  2.621775
+1.646495  1.743836  2.118671  2.334538  2.487649  2.597304
+1.574474  1.666941  2.165682  2.294626  2.463016  2.642929
+1.568529  1.662679  2.068377  2.240071  2.374784  2.534291
+1.501088  1.675567  2.019200  2.253935  2.403957  2.560212
+1.333222  1.481857  1.810385  2.032438  2.235271  2.464023
+1.184189  1.376469  1.743067  2.077177  2.247370  2.436639
+0.860298  1.017970  1.399466  2.031356  2.445832  2.512045
+0.987543  1.187216  1.324668  2.086564  2.440265  2.507859
+0.987539  1.057392  1.400508  2.291033  2.462013  2.534542
+1.072567  1.168456  1.335425  2.281555  2.595283  2.641991
+1.042424  1.219473  1.328751  2.104394  2.481407  2.544847
+1.075840  1.204873  1.370286  2.206558  2.509524  2.557197
+1.075906  1.188083  1.414337  2.320102  2.530914  2.589422
+1.076149  1.267397  1.411982  2.218421  2.452294  2.540946
+1.154549  1.314810  1.500389  2.300970  2.505189  2.569795
+1.170382  1.300375  1.477782  2.201078  2.418226  2.511009
+1.164826  1.290783  1.436432  2.042173  2.434597  2.517154
+1.193857  1.293191  1.527594  2.008805  2.370813  2.473257
+1.263542  1.385669  1.596130  2.048764  2.427787  2.504082
+1.305187  1.421012  1.658876  2.095853  2.429425  2.518576
+1.378304  1.494361  1.710276  2.078040  2.477964  2.559482
+1.333727  1.475263  1.674044  2.039635  2.446712  2.527050
+1.346152  1.468526  1.673673  1.961087  2.462599  2.567158
+1.324261  1.466904  1.747093  2.009440  2.480558  2.571278
+1.306921  1.411049  1.740784  2.032398  2.466338  2.575794
+1.277304  1.408311  1.715677  1.956928  2.505971  2.597300
+1.239174  1.409858  1.635688  1.843138  2.511337  2.592493
+1.262271  1.377900  1.665878  1.785276  2.414923  2.519101
+1.223772  1.378608  1.706935  1.812010  2.472106  2.553503
+1.248275  1.560969  1.688454  2.024421  2.464682  2.532083
+1.551147  1.674831  1.863917  2.242605  2.425666  2.512306
+1.613538  1.736360  1.915832  2.284340  2.505100  2.575495
+1.675654  1.764549  2.013262  2.308596  2.479308  2.570877
+1.676790  1.732192  2.216913  2.350744  2.516807  2.584938
+1.672091  1.768085  2.170300  2.277530  2.411164  2.492525
+1.645851  1.881233  2.216349  2.320633  2.460809  2.564931
+1.714095  1.933206  2.220117  2.327698  2.453033  2.557432
+1.864162  1.965600  2.211890  2.354075  2.451546  2.543697
+1.840509  1.980901  2.141357  2.275924  2.487833  2.607026
+1.281628  1.508538  1.878088  2.153311  2.510390  2.597723
+1.285937  1.558518  1.895925  2.154502  2.510047  2.628884
+1.179704  1.457966  1.805824  2.088695  2.536834  2.648347
+1.213178  1.474144  1.796481  1.886388  2.426441  2.597142
+1.175759  1.566628  1.786803  1.959634  2.443976  2.621808
+1.241280  1.495544  1.772941  1.959431  2.513639  2.611886
+1.252864  1.547349  1.741300  1.873671  2.447277  2.674639
+1.234254  1.437033  1.742154  1.835750  2.372173  2.581494
+1.262397  1.351279  1.710277  1.833486  2.308910  2.583598
+1.330861  1.424104  1.673893  1.802977  2.271847  2.556762
+1.374920  1.473192  1.703358  1.804519  2.374494  2.625833
+1.350424  1.477644  1.741927  1.869579  2.468162  2.637851
+1.299448  1.409270  1.707326  1.828822  2.412618  2.660075
+1.283675  1.413183  1.694008  1.913840  2.235005  2.663358
+1.131349  1.545449  1.738197  1.927132  2.242548  2.529539
+1.310395  1.445321  1.800815  1.941760  2.224181  2.430698
+1.207823  1.407710  1.792289  1.897833  2.278582  2.588793
+1.172078  1.380374  1.769606  1.870709  2.420713  2.665411
+1.050374  1.292916  1.708676  1.815571  2.398301  2.647835
+1.012196  1.352840  1.710467  1.798435  2.501052  2.622110
+0.949688  1.511315  1.802233  2.051775  2.386590  2.543931
+1.239527  1.523312  1.992644  2.175922  2.535838  2.663321
+1.170409  1.423959  1.918088  2.072957  2.371327  2.600694
+1.153282  1.631638  1.943662  2.041389  2.426287  2.527936
+1.130992  1.687340  1.913097  1.982416  2.366644  2.592156
+0.876015  1.539120  1.952815  2.040387  2.354192  2.592474
+0.741027  1.330783  2.010264  2.088976  2.406380  2.512408
+0.692068  1.220984  1.966843  2.053168  2.527609  2.625367
+0.697907  1.406778  2.016010  2.085819  2.573177  2.652342
+0.747161  1.542479  1.982188  2.091091  2.573313  2.614600
+0.759939  1.518111  1.938220  2.162963  2.534355  2.639085
+0.752015  1.445930  2.097743  2.150626  2.479886  2.587138
+0.804190  1.428522  2.012448  2.195806  2.470749  2.577263
+0.757784  1.356544  1.878177  2.232246  2.530996  2.630296
+0.782189  1.251703  1.766911  2.206553  2.564453  2.617695
+0.692136  1.308291  1.593024  1.842927  2.504334  2.652647
+0.779817  1.264995  1.689687  1.803686  2.530498  2.669456
+0.774734  1.199620  1.649586  1.726576  2.437097  2.591528
+0.885025  1.311938  1.646470  1.739192  2.578721  2.671994
+0.949387  1.387109  1.641927  1.762570  2.528769  2.585787
+1.012043  1.455355  1.666729  1.752575  2.434270  2.553516
+1.104075  1.529375  1.682092  1.973044  2.345511  2.511577
+1.423997  1.619409  1.995513  2.298913  2.430779  2.521288
+1.582461  1.832072  2.275101  2.383131  2.482800  2.539316
+1.706366  2.001667  2.300029  2.394812  2.486966  2.586945
+1.532256  1.933761  2.284009  2.422313  2.622936  2.706043
+1.678938  1.889060  2.338973  2.512967  2.632369  2.679498
+1.634405  1.783714  2.124182  2.462997  2.610348  2.691361
+1.618353  1.751021  2.026128  2.418017  2.609402  2.678953
+1.565199  1.794303  1.902067  2.405664  2.629332  2.696870
+1.282138  1.591250  1.852032  2.314230  2.617777  2.722940
+1.220365  1.421679  1.694336  1.881742  2.556796  2.653179
+1.139402  1.299007  1.622371  1.770432  2.543866  2.640704
+1.214491  1.467423  1.628034  1.794008  2.563409  2.691705
+1.059626  1.521805  1.631948  1.865161  2.601036  2.683659
+1.180200  1.536587  1.671861  2.137961  2.587647  2.638393
+1.213651  1.582110  1.709505  2.157513  2.476799  2.574007
+1.248459  1.553050  1.645298  1.897537  2.577761  2.681279
+1.340584  1.601427  1.679985  1.889143  2.647088  2.755132
+1.194554  1.575563  1.697528  1.801365  2.596516  2.752368
+1.152988  1.531378  1.716414  1.812718  2.417149  2.696455
+1.175284  1.565269  1.657415  1.734779  2.517977  2.671209
+1.315878  1.515976  1.775170  2.058078  2.307304  2.449295
+1.247131  1.381271  1.568357  1.857012  2.157278  2.435014
+1.240254  1.383648  1.580575  1.991473  2.303569  2.411055
+1.286797  1.385847  1.730704  2.067540  2.326906  2.473042
+1.204107  1.337886  1.665492  2.038754  2.231416  2.543395
+1.182343  1.312111  1.522260  1.971028  2.237772  2.483629
+1.095429  1.319910  1.465710  2.032595  2.279936  2.523638
+1.152497  1.294508  1.458307  2.032534  2.306031  2.406760
+0.991441  1.274662  1.428222  1.940576  2.399100  2.509374
+0.850157  1.274723  1.453729  1.893527  2.382294  2.477664
+0.936060  1.313211  1.426739  1.888973  2.551745  2.604392
+0.972592  1.328333  1.432833  2.011050  2.573671  2.613672
+0.909400  1.422756  1.494628  2.073945  2.620634  2.662685
+0.828475  1.431701  1.569493  2.054254  2.622115  2.669741
+0.779249  1.375673  1.476635  1.949187  2.558998  2.622137
+0.815710  1.472687  1.650494  2.000905  2.565206  2.611683
+0.822357  1.333508  1.551653  1.864184  2.595847  2.706122
+0.736497  1.259887  1.490815  1.882220  2.494405  2.619982
+0.902240  1.431002  1.520505  1.910794  2.605395  2.678585
+0.900488  1.363048  1.461814  2.009771  2.665876  2.717180
+1.015394  1.361530  1.474854  1.920438  2.637482  2.702570
+0.950918  1.335184  1.440876  1.874351  2.678915  2.746244
+0.965674  1.306906  1.412895  1.727184  2.656317  2.739472
+1.121335  1.291332  1.412980  1.731394  2.624577  2.735999
+1.135486  1.299970  1.448634  1.635793  2.616713  2.687744
+1.120410  1.248201  1.383680  1.579760  2.397167  2.585237
+1.113415  1.294499  1.482373  1.602789  2.394835  2.634809
+1.241746  1.318174  1.473167  1.577503  2.426003  2.649775
+1.184376  1.272893  1.497747  1.608053  2.144455  2.537267
+1.283135  1.377322  1.543041  1.645177  2.105790  2.490904
+1.138008  1.380756  1.560480  1.640979  2.271006  2.625523
+1.243884  1.351538  1.603070  1.739791  2.038080  2.447512
+1.267258  1.509957  1.641649  1.831984  2.331327  2.472826
+1.276365  1.476401  1.625021  1.930342  2.319377  2.524369
+1.222679  1.559407  1.669982  1.805473  2.326911  2.580278
+1.265218  1.503892  1.830979  2.091536  2.396722  2.569088
+1.256047  1.528877  1.853033  2.106171  2.365139  2.503280
+1.236501  1.479118  1.728297  2.041463  2.528558  2.612900
+1.220644  1.605193  1.713770  1.950925  2.597639  2.649495
+1.255546  1.591871  1.706750  2.062713  2.561381  2.626901
+1.307080  1.580016  1.653547  1.941293  2.552727  2.643706
+1.310968  1.512803  1.656527  1.839190  2.592097  2.677706
+1.188596  1.316082  1.579370  1.690772  2.438500  2.641881
+1.114671  1.235994  1.591973  1.749192  2.359438  2.545213
+1.080067  1.277132  1.727997  2.041411  2.337068  2.549786
+1.032222  1.250210  1.680999  1.998340  2.318533  2.502200
+1.064719  1.159182  1.666731  2.019294  2.256570  2.573467
+1.026313  1.146367  1.672929  2.054063  2.433228  2.615716
+0.942929  1.092789  1.613522  2.077784  2.365142  2.499737
+0.980250  1.254777  1.492003  1.801193  2.445325  2.575711
+0.957395  1.251868  1.378337  1.744574  2.502966  2.665866
+0.840336  1.267995  1.397728  1.827984  2.555867  2.651285
+1.009902  1.175808  1.277770  2.048361  2.637904  2.700904
+0.883840  1.026780  1.146692  1.893681  2.518692  2.610564
+0.997171  1.138289  1.246408  1.837527  2.549820  2.642693
+0.992125  1.178874  1.282272  1.974399  2.559112  2.612968
+1.067589  1.255803  1.359021  1.963939  2.541420  2.596308
+1.086327  1.329068  1.432326  1.928840  2.528332  2.598239
+1.100351  1.345579  1.469529  1.942358  2.469723  2.561680
+1.101019  1.374382  1.561144  1.942560  2.484288  2.552996
+1.177497  1.455165  1.571485  1.943496  2.500309  2.550902
+1.260768  1.477903  1.601611  2.024022  2.487425  2.554237
+1.216439  1.470082  1.639601  1.957212  2.523832  2.588189
+1.257980  1.407199  1.651434  1.910722  2.464200  2.620868
+1.162091  1.436543  1.682166  1.896924  2.447302  2.677069
+1.250215  1.484632  1.653870  1.930473  2.493894  2.633436
+1.237977  1.513389  1.648781  1.880344  2.504094  2.581491
+1.223199  1.412456  1.634083  1.797183  2.451210  2.620618
+1.258745  1.358397  1.627717  1.726099  2.428287  2.621329
+1.234919  1.345606  1.552151  1.708675  2.385742  2.606052
+1.186417  1.341808  1.636911  1.754679  2.429716  2.544394
+1.216260  1.305888  1.632777  1.755770  2.320806  2.583785
+1.165343  1.284152  1.560527  1.682036  2.243217  2.494673
+1.085859  1.215111  1.590602  1.715333  2.231633  2.527227
+1.091652  1.384156  1.655159  1.716563  2.302785  2.535552
+1.060328  1.239077  1.627213  1.737571  2.420162  2.599147
+1.090079  1.394777  1.682485  1.799904  2.331813  2.532862
+1.169038  1.568116  1.785725  2.031553  2.372207  2.497865
+1.241903  1.662080  1.822491  2.169543  2.424542  2.525186
+1.040287  1.690414  1.853098  2.038593  2.472015  2.535969
+0.974879  1.689063  1.850137  2.151312  2.507415  2.562538
+0.879683  1.743838  1.968060  2.161147  2.463916  2.545849
+0.790116  1.794412  2.037297  2.159739  2.508403  2.564883
+0.793374  1.796169  2.060524  2.331075  2.591299  2.648578
+0.859332  1.800464  2.025451  2.200641  2.534316  2.611320
+0.825206  1.895126  2.063579  2.264528  2.514030  2.610797
+0.974068  1.904781  2.002639  2.315848  2.539666  2.595157
+0.961311  1.821283  2.015215  2.274545  2.600786  2.653365
+0.971040  1.737011  1.914953  2.243896  2.572362  2.612602
+0.999552  1.817902  1.953097  2.178591  2.574331  2.626275
+0.977300  1.756036  1.929137  2.135346  2.424209  2.556085
+1.065543  1.747638  1.899169  2.309745  2.587388  2.630589
+1.077057  1.655717  1.868334  2.238603  2.508913  2.571841
+1.077829  1.716423  1.791462  2.266223  2.615485  2.654046
+1.276021  1.713383  1.788825  2.101442  2.625616  2.679590
+1.263173  1.699086  1.776931  2.035107  2.610346  2.653421
+1.297137  1.667668  1.744010  2.030119  2.608062  2.678066
+1.262373  1.626459  1.781159  2.026178  2.636261  2.699179
+1.318031  1.657767  1.763578  1.939043  2.575450  2.705613
+0.980669  1.555891  1.722977  1.978553  2.568958  2.638420
+0.840013  1.463397  1.772781  2.164864  2.566894  2.666228
+0.832158  1.505750  1.937891  2.233974  2.630131  2.694884
+0.745541  1.530097  2.060727  2.162996  2.619130  2.692130
+0.832050  1.597985  2.127678  2.196662  2.528870  2.619304
+0.820544  1.616482  2.044842  2.133557  2.587661  2.668155
+0.789348  1.638569  1.996032  2.212800  2.572934  2.615430
+0.806795  1.742530  2.043915  2.183841  2.603407  2.660269
+0.843597  1.761377  1.998823  2.132969  2.596500  2.673163
+0.927714  1.759399  1.987169  2.201990  2.591677  2.650810
+1.070504  1.767115  1.978295  2.227191  2.642696  2.686380
+1.022852  1.856828  1.989822  2.217218  2.480936  2.574687
+0.886409  1.742690  1.863071  2.054904  2.542328  2.627054
+0.996501  1.553639  1.808061  1.948514  2.516726  2.605745
+1.218221  1.525015  1.878023  2.107205  2.423952  2.578894
+1.274705  1.491779  1.906237  2.101242  2.455724  2.563566
+1.319477  1.587082  1.879825  2.240443  2.439462  2.547992
+1.474513  1.699004  1.929257  2.228217  2.451873  2.563132
+1.545274  1.722709  1.892103  2.169162  2.520241  2.602958
+1.546160  1.668894  1.961486  2.212079  2.505999  2.621266
+1.535625  1.699287  2.016356  2.250824  2.550093  2.645619
+1.583411  1.687746  2.051949  2.332633  2.491721  2.598036
+1.500933  1.594052  1.929231  2.259850  2.422622  2.547761
+1.464918  1.614783  1.881701  2.216729  2.528952  2.623217
+1.406726  1.605026  1.805977  2.222725  2.509009  2.587841
+1.106418  1.527781  1.730182  2.045916  2.549464  2.637497
+1.008151  1.439718  1.665472  1.941372  2.652442  2.751095
+0.971347  1.402084  1.708896  1.953274  2.613325  2.684989
+0.946352  1.501044  1.672151  1.975870  2.527905  2.585573
+0.909229  1.453576  1.713898  2.065638  2.529315  2.613161
+0.975079  1.523288  1.839559  2.138553  2.498690  2.583725
+0.899524  1.552407  1.831637  2.068567  2.544880  2.611180
+0.805175  1.462327  1.860536  2.101344  2.570440  2.654850
+0.859011  1.514531  1.892400  2.012520  2.579679  2.648521
+0.763528  1.522433  1.902539  2.018517  2.556446  2.609582
+0.814387  1.494849  1.941715  2.077981  2.540329  2.612839
+0.853805  1.401871  1.942985  2.088086  2.488394  2.578614
+0.782036  1.348553  1.935300  2.025076  2.516816  2.598046
+0.754386  1.384949  1.900243  1.999656  2.600374  2.663763
+0.746921  1.421143  1.934567  2.038908  2.553273  2.612298
+0.731911  1.450761  1.924508  2.032744  2.497904  2.556491
+0.706741  1.543731  1.876596  1.992525  2.510176  2.565960
+0.852548  1.549952  1.899169  2.226497  2.522787  2.583939
+0.885718  1.656999  1.865791  2.162889  2.467388  2.553769
+0.951271  1.641721  1.813995  2.153059  2.427099  2.499612
+0.928485  1.502784  1.809440  2.224767  2.472400  2.553921
+0.816616  1.391098  1.665580  2.176141  2.510722  2.582819
+0.915934  1.390936  1.767514  2.169548  2.471665  2.652526
+1.115341  1.362311  1.722592  2.033033  2.406363  2.601875
+1.138664  1.252976  1.684517  1.937366  2.384311  2.623900
+1.084318  1.211953  1.633639  1.889936  2.413095  2.626228
+1.126224  1.344921  1.648605  2.071123  2.484189  2.605656
+1.123905  1.461556  1.845099  2.172457  2.462662  2.605139
+1.132557  1.468636  1.740223  2.184934  2.467938  2.580103
+1.148248  1.506173  1.676602  2.049290  2.446774  2.565419
+0.999544  1.404698  1.641769  1.863324  2.523843  2.592114
+0.932167  1.395984  1.709428  1.845739  2.524792  2.599616
+0.870085  1.476327  1.721511  1.897091  2.490256  2.593759
+0.891107  1.429106  1.789728  1.958425  2.519104  2.604987
+0.855550  1.421268  1.900935  2.011013  2.546617  2.609760
+0.895038  1.482579  1.873572  1.974828  2.519429  2.584450
+0.809092  1.486499  1.902272  2.000876  2.518374  2.597261
+0.808211  1.460169  1.881579  1.961398  2.468386  2.616332
+0.774237  1.471857  1.901217  2.013761  2.564870  2.665691
+0.800018  1.576948  1.938176  2.043718  2.494383  2.630097
+0.804705  1.570759  1.889356  1.975489  2.447653  2.555191
+0.840709  1.603377  1.827077  2.026318  2.442892  2.492424
+0.887288  1.536144  1.781616  1.952198  2.500811  2.576512
+0.847527  1.504701  1.792948  1.891589  2.578888  2.637316
+0.959025  1.533821  1.821486  1.979739  2.463750  2.544302
+1.036319  1.640786  1.886024  1.962887  2.358662  2.577756
+0.981142  1.486738  1.733096  1.878277  2.537973  2.610473
+1.046486  1.438515  1.740840  1.850012  2.590883  2.684137
+1.103404  1.489782  1.738241  1.817496  2.588368  2.701052
+1.176925  1.473684  1.732853  1.823270  2.524527  2.733540
+1.173320  1.438383  1.696555  1.792536  2.580785  2.665770
+1.134955  1.421862  1.604070  1.756135  2.617948  2.706644
+1.136007  1.384178  1.699100  1.855319  2.591013  2.683215
+1.201710  1.421935  1.737864  2.011199  2.540959  2.681093
+1.227450  1.624461  2.125226  2.340556  2.593435  2.671453
+1.265133  1.765689  2.131338  2.391774  2.613959  2.699849
+1.342282  1.581411  1.979244  2.297759  2.520391  2.602258
+1.449013  1.725546  2.176279  2.354739  2.538758  2.627319
+1.418726  1.898681  2.206330  2.275600  2.488746  2.586794
+1.555706  1.837600  2.165743  2.346188  2.530178  2.628757
+1.444437  1.790050  1.911014  2.301915  2.468862  2.540557
+1.378052  1.668499  1.845265  2.324889  2.537708  2.601471
+1.394741  1.682710  1.817346  2.075533  2.512120  2.566889
+1.297199  1.655884  1.825405  2.062105  2.513307  2.577371
+1.280659  1.669901  1.824567  2.168209  2.528166  2.601986
+1.306896  1.600808  1.767971  2.095291  2.509869  2.606002
+1.257678  1.559755  1.787804  2.076895  2.540388  2.627179
+1.196849  1.597550  1.817421  2.152662  2.580796  2.651246
+1.235935  1.676643  1.942307  2.326482  2.561542  2.645593
+1.189058  1.818895  2.081496  2.366454  2.608018  2.672086
+1.427589  1.885421  2.264907  2.424220  2.571371  2.651155
+1.714473  1.937868  2.390009  2.457149  2.552016  2.601930
+1.874136  2.073506  2.370468  2.511263  2.709177  2.749495
+1.647818  1.987798  2.281909  2.412099  2.604693  2.674821
+1.596366  1.881529  2.193995  2.380524  2.511918  2.584564
+1.555508  1.775218  2.064094  2.325699  2.512934  2.599262
+1.330054  1.712961  1.917624  2.285900  2.466591  2.579279
+0.990071  1.410874  1.632331  1.965889  2.466882  2.580417
+0.925150  1.299025  1.551401  1.897486  2.498481  2.645212
+0.968080  1.367127  1.520360  1.988159  2.313473  2.546943
+0.974374  1.283811  1.474810  2.078302  2.331089  2.455153
+1.000624  1.299150  1.415675  1.955760  2.261550  2.354258
+0.964045  1.136490  1.305931  1.936406  2.197537  2.299418
+1.013087  1.201143  1.372664  1.820179  2.063576  2.210659
+1.086478  1.216705  1.476655  1.604039  1.855963  2.324503
+1.090160  1.201207  1.460778  1.562225  2.016093  2.458980
+1.133754  1.257469  1.407186  1.787681  2.289532  2.530854
+1.134831  1.341221  1.636293  1.813775  2.219453  2.584652
+0.952747  1.300930  1.616891  1.751014  2.352113  2.547879
+1.078704  1.490043  1.571579  1.800532  2.468175  2.650436
+1.239045  1.333032  1.551379  1.707824  2.242922  2.604251
+1.176517  1.299114  1.588881  1.714081  2.128856  2.533523
+1.135831  1.253056  1.538412  1.634480  2.258093  2.593874
+1.092382  1.253236  1.541772  1.679875  2.423197  2.617584
+1.142663  1.256402  1.528284  1.629676  2.391580  2.589689
+1.172793  1.281248  1.479204  1.608878  2.335938  2.593681
+1.146782  1.251953  1.432916  1.553285  2.238941  2.534180
+1.109946  1.231415  1.412105  1.516055  2.308569  2.599903
+1.120273  1.235535  1.425736  1.509519  2.435529  2.643814
+1.085869  1.189296  1.392718  1.494347  2.129342  2.508989
+1.020500  1.173144  1.440965  1.574421  2.335855  2.524051
+1.040551  1.174338  1.525717  1.693110  2.493748  2.632352
+1.034516  1.205262  1.365087  1.513000  2.471788  2.578008
+1.079383  1.204002  1.332428  1.456604  2.502131  2.665633
+1.088863  1.236949  1.357003  1.564945  2.602020  2.707576
+1.106792  1.262402  1.367273  1.823952  2.598579  2.676300
+1.085013  1.233527  1.311463  1.730333  2.560087  2.690320
+1.069205  1.180224  1.343020  1.474834  2.268046  2.544311
+1.039392  1.375617  1.721445  2.038018  2.463998  2.600812
+1.267853  1.384109  1.659902  1.934021  2.207761  2.424577
+1.225276  1.316621  1.678147  1.819230  2.165345  2.498548
+1.114141  1.283029  1.655518  1.879671  2.352472  2.553537
+1.094762  1.370017  1.799126  2.082377  2.469494  2.578819
+1.041250  1.472757  1.748735  2.047588  2.511699  2.589828
+1.071665  1.456546  1.700524  1.927317  2.441484  2.607003
+0.929006  1.487241  1.669550  1.885619  2.544274  2.628318
+0.844366  1.339712  1.812456  2.300208  2.566012  2.631255
+0.761441  1.279951  1.670446  2.006350  2.526824  2.607557
+0.716643  1.374843  1.843436  2.126958  2.552993  2.613146
+0.749967  1.598458  1.883266  2.050443  2.579184  2.614111
+0.759376  1.596383  1.929103  1.984550  2.566734  2.654207
+0.724977  1.682905  1.888292  2.034796  2.503861  2.565502
+0.812327  1.669865  1.961771  2.102146  2.538781  2.598559
+0.767334  1.594629  1.984319  2.133419  2.501689  2.557813
+0.760230  1.650647  1.928366  2.094047  2.565241  2.596082
+0.766762  1.648062  1.858552  2.078593  2.587079  2.608213
+0.860938  1.629253  1.824855  2.067350  2.563373  2.603209
+0.960953  1.583632  1.752206  2.078444  2.555531  2.628507
+1.007927  1.548004  1.734955  2.185660  2.489350  2.551445
+1.040401  1.471117  1.643519  2.051558  2.508524  2.579168
+1.096025  1.457427  1.604009  1.926200  2.482033  2.552204
+1.130428  1.431534  1.592806  2.014740  2.510652  2.567779
+1.197898  1.465481  1.622929  2.075950  2.507052  2.582750
+1.258831  1.504797  1.659109  1.970653  2.595750  2.685651
+1.315451  1.467446  1.705718  1.898634  2.602572  2.704978
+1.272475  1.431894  1.712848  1.940258  2.650379  2.717166
+1.278865  1.528652  1.796202  1.995202  2.501761  2.587606
+1.458616  1.693943  2.067903  2.264838  2.506857  2.623939
+1.718797  1.909611  2.147601  2.354174  2.485581  2.591269
+1.813873  1.875483  2.097637  2.329683  2.497798  2.596247
+1.744286  1.859449  2.043169  2.284589  2.430897  2.538572
+1.514180  1.808296  1.933791  2.234651  2.462232  2.546237
+1.489264  1.781194  1.908004  2.144484  2.418589  2.513858
+1.434785  1.679793  1.817348  2.105365  2.431372  2.528241
+1.469581  1.589507  1.813510  2.213129  2.440502  2.520511
+1.496287  1.640049  1.893865  2.298621  2.484705  2.576207
+1.333417  1.584728  1.893019  2.121814  2.525345  2.632617
+1.518722  1.735840  1.956529  2.176426  2.465338  2.572342
+1.520953  1.742556  2.010582  2.133578  2.447458  2.566704
+1.458119  1.692227  2.001920  2.120543  2.431042  2.565112
+1.526915  1.662389  2.025135  2.125056  2.537873  2.626810
+1.498303  1.644212  1.960732  2.103288  2.440309  2.572412
+1.415476  1.548286  1.770800  2.099931  2.450265  2.599463
+1.367188  1.460632  1.739482  2.074030  2.551953  2.639997
diff --git a/gr-vocoder/lib/codec2/codebook/lsp8910.txt 
b/gr-vocoder/lib/codec2/codebook/lsp8910.txt
deleted file mode 100644
index 759136b..0000000
--- a/gr-vocoder/lib/codec2/codebook/lsp8910.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-3 64
-2.048073  2.534502  2.645915
-2.019670  2.269744  2.605462
-1.961101  2.329646  2.562857
-1.968573  2.532712  2.616918
-2.183480  2.514381  2.629582
-2.259379  2.516615  2.620410
-2.172791  2.462460  2.567064
-2.097666  2.303933  2.421685
-2.052990  2.353242  2.546992
-2.043642  2.232362  2.499262
-2.106151  2.393131  2.488401
-2.099167  2.437862  2.558655
-2.013877  2.422875  2.530071
-2.033848  2.483776  2.584598
-2.114474  2.516856  2.602372
-2.229214  2.584056  2.678855
-2.131151  2.584299  2.674845
-1.472721  2.477091  2.630241
-2.010907  2.598415  2.682989
-2.353653  2.524066  2.619773
-2.419897  2.623938  2.699605
-2.319080  2.602148  2.689044
-1.860342  2.503881  2.616576
-1.910517  2.386693  2.610126
-1.748689  2.371809  2.496542
-1.618495  2.403425  2.554956
-1.844073  2.437026  2.533443
-1.924810  2.388543  2.502698
-1.937227  2.258363  2.501697
-1.687554  2.209123  2.545239
-1.851950  2.278628  2.565632
-1.868154  2.330150  2.444883
-1.874180  2.213118  2.351940
-1.757311  2.030626  2.433836
-1.650306  2.152371  2.243421
-1.612794  1.884686  2.339313
-1.745431  2.278895  2.389449
-1.590923  2.304155  2.408510
-1.475982  2.275548  2.509897
-1.508695  2.045463  2.455520
-1.872054  2.061777  2.246202
-1.983947  2.159155  2.445535
-1.745180  2.483765  2.593698
-1.900116  2.079600  2.407479
-1.841672  2.167042  2.486827
-1.932912  2.148464  2.569850
-2.134174  2.363673  2.584252
-2.106094  2.450645  2.638417
-1.954135  2.460313  2.666512
-1.907634  2.573801  2.674025
-1.625579  2.539569  2.656363
-1.785866  2.572616  2.676082
-1.798447  2.376454  2.624298
-2.020033  2.397244  2.619868
-1.946581  2.468791  2.564185
-2.008920  2.342400  2.469132
-1.983846  2.271044  2.395408
-1.988039  2.154150  2.317920
-2.077197  2.216622  2.389101
-2.117255  2.283907  2.512242
-2.177233  2.334622  2.458268
-2.214655  2.425510  2.620013
-2.199931  2.390272  2.520731
-2.271755  2.448682  2.552649
diff --git a/gr-vocoder/lib/codec2/codebook/lspdt1.txt 
b/gr-vocoder/lib/codec2/codebook/lspdt1.txt
new file mode 100644
index 0000000..ba30880
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspdt1.txt
@@ -0,0 +1,9 @@
+1 8
+-75
+-50
+-25
+  0
+ 25
+ 50
+ 75
+100
diff --git a/gr-vocoder/lib/codec2/codebook/lspdt10.txt 
b/gr-vocoder/lib/codec2/codebook/lspdt10.txt
new file mode 100644
index 0000000..e72c16c
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspdt10.txt
@@ -0,0 +1,3 @@
+1 2
+-50
+ 50
diff --git a/gr-vocoder/lib/codec2/codebook/lspdt2.txt 
b/gr-vocoder/lib/codec2/codebook/lspdt2.txt
new file mode 100644
index 0000000..ba30880
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspdt2.txt
@@ -0,0 +1,9 @@
+1 8
+-75
+-50
+-25
+  0
+ 25
+ 50
+ 75
+100
diff --git a/gr-vocoder/lib/codec2/codebook/lspdt3.txt 
b/gr-vocoder/lib/codec2/codebook/lspdt3.txt
new file mode 100644
index 0000000..7ebefd9
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspdt3.txt
@@ -0,0 +1,5 @@
+1 4
+-50
+  0
+ 50
+ 100
diff --git a/gr-vocoder/lib/codec2/codebook/lspdt4.txt 
b/gr-vocoder/lib/codec2/codebook/lspdt4.txt
new file mode 100644
index 0000000..7ebefd9
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspdt4.txt
@@ -0,0 +1,5 @@
+1 4
+-50
+  0
+ 50
+ 100
diff --git a/gr-vocoder/lib/codec2/codebook/lspdt5.txt 
b/gr-vocoder/lib/codec2/codebook/lspdt5.txt
new file mode 100644
index 0000000..7ebefd9
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspdt5.txt
@@ -0,0 +1,5 @@
+1 4
+-50
+  0
+ 50
+ 100
diff --git a/gr-vocoder/lib/codec2/codebook/lspdt6.txt 
b/gr-vocoder/lib/codec2/codebook/lspdt6.txt
new file mode 100644
index 0000000..7ebefd9
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspdt6.txt
@@ -0,0 +1,5 @@
+1 4
+-50
+  0
+ 50
+ 100
diff --git a/gr-vocoder/lib/codec2/codebook/lspdt7.txt 
b/gr-vocoder/lib/codec2/codebook/lspdt7.txt
new file mode 100644
index 0000000..e72c16c
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspdt7.txt
@@ -0,0 +1,3 @@
+1 2
+-50
+ 50
diff --git a/gr-vocoder/lib/codec2/codebook/lspdt8.txt 
b/gr-vocoder/lib/codec2/codebook/lspdt8.txt
new file mode 100644
index 0000000..e72c16c
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspdt8.txt
@@ -0,0 +1,3 @@
+1 2
+-50
+ 50
diff --git a/gr-vocoder/lib/codec2/codebook/lspdt9.txt 
b/gr-vocoder/lib/codec2/codebook/lspdt9.txt
new file mode 100644
index 0000000..e72c16c
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspdt9.txt
@@ -0,0 +1,3 @@
+1 2
+-50
+ 50
diff --git a/gr-vocoder/lib/codec2/codebook/lspjnd5-10.txt 
b/gr-vocoder/lib/codec2/codebook/lspjnd5-10.txt
new file mode 100644
index 0000000..e4e500c
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspjnd5-10.txt
@@ -0,0 +1,8317 @@
+6 3369
+1400.0  2000.0  2400.0  2500.0  3300.0  3400.0
+1400.0  1900.0  2400.0  2500.0  3200.0  3400.0
+1400.0  1800.0  2400.0  2500.0  3200.0  3300.0
+1400.0  1800.0  2400.0  2500.0  3300.0  3400.0
+1400.0  2100.0  2400.0  2600.0  3300.0  3400.0
+1400.0  1900.0  2300.0  2600.0  3200.0  3300.0
+1400.0  1900.0  2100.0  2600.0  3100.0  3200.0
+1600.0  2100.0  2400.0  2500.0  3200.0  3300.0
+1500.0  1900.0  2300.0  2600.0  3100.0  3200.0
+1600.0  1800.0  2400.0  2600.0  3200.0  3300.0
+1700.0  1900.0  2300.0  2500.0  3200.0  3300.0
+1800.0  1900.0  2300.0  2500.0  3200.0  3300.0
+1800.0  2000.0  2300.0  2500.0  3300.0  3400.0
+1900.0  2000.0  2200.0  2600.0  3300.0  3400.0
+1700.0  2000.0  2700.0  2900.0  3200.0  3300.0
+1700.0  2100.0  2600.0  2900.0  3200.0  3300.0
+1600.0  2000.0  2500.0  2800.0  3200.0  3400.0
+1500.0  1800.0  2300.0  2400.0  3200.0  3300.0
+1400.0  1700.0  2200.0  2400.0  3200.0  3300.0
+1300.0  1700.0  2200.0  2300.0  3200.0  3300.0
+1300.0  1600.0  2200.0  2300.0  3200.0  3300.0
+1200.0  1600.0  2200.0  2400.0  3200.0  3300.0
+1200.0  1600.0  2200.0  2300.0  3200.0  3300.0
+1200.0  1500.0  2200.0  2300.0  3100.0  3300.0
+1200.0  1500.0  2200.0  2300.0  3200.0  3300.0
+1300.0  1500.0  2100.0  2300.0  3000.0  3200.0
+1300.0  1600.0  2000.0  2200.0  3000.0  3200.0
+1400.0  1700.0  2000.0  2300.0  3100.0  3200.0
+1500.0  1700.0  2000.0  2300.0  3200.0  3300.0
+1300.0  1600.0  1900.0  2100.0  3100.0  3200.0
+1200.0  1500.0  2100.0  2300.0  3200.0  3300.0
+1500.0  1800.0  2000.0  2300.0  3000.0  3200.0
+1200.0  1500.0  2200.0  2400.0  3300.0  3400.0
+1200.0  1500.0  2200.0  2400.0  3200.0  3400.0
+1200.0  1500.0  2200.0  2400.0  3200.0  3300.0
+1300.0  1500.0  2300.0  2400.0  3200.0  3300.0
+1300.0  1500.0  2200.0  2500.0  3000.0  3200.0
+1300.0  1600.0  2300.0  2600.0  3000.0  3200.0
+1400.0  1800.0  2400.0  2600.0  3100.0  3200.0
+1700.0  2000.0  2500.0  2800.0  3200.0  3300.0
+1900.0  2200.0  2600.0  2700.0  3100.0  3200.0
+1900.0  2300.0  2600.0  2900.0  3200.0  3300.0
+2000.0  2300.0  2600.0  2900.0  3300.0  3400.0
+1900.0  2300.0  2500.0  2900.0  3300.0  3400.0
+1800.0  2300.0  2500.0  2800.0  3300.0  3400.0
+1600.0  1800.0  2400.0  2500.0  3200.0  3400.0
+1500.0  1800.0  2400.0  2600.0  3100.0  3400.0
+1800.0  2100.0  2600.0  2900.0  3300.0  3500.0
+2000.0  2500.0  2700.0  3000.0  3400.0  3500.0
+2200.0  2500.0  2700.0  3100.0  3300.0  3400.0
+2300.0  2500.0  2700.0  3100.0  3300.0  3400.0
+2100.0  2500.0  2600.0  3000.0  3200.0  3300.0
+2100.0  2400.0  2500.0  3000.0  3200.0  3300.0
+1700.0  2000.0  2300.0  2700.0  3100.0  3200.0
+1700.0  2000.0  2300.0  2800.0  3100.0  3300.0
+1600.0  1900.0  2200.0  2800.0  3000.0  3200.0
+1500.0  1900.0  2100.0  2700.0  3000.0  3200.0
+1400.0  1900.0  2000.0  2600.0  3000.0  3100.0
+1200.0  1600.0  2100.0  2400.0  3200.0  3300.0
+1500.0  1600.0  2300.0  2400.0  3200.0  3400.0
+1600.0  1700.0  2200.0  2400.0  3100.0  3400.0
+1600.0  1700.0  2200.0  2400.0  3200.0  3400.0
+1700.0  1800.0  2300.0  2400.0  3200.0  3400.0
+1700.0  1800.0  2300.0  2400.0  3200.0  3300.0
+1700.0  1800.0  2300.0  2400.0  3100.0  3200.0
+1700.0  1800.0  2200.0  2500.0  3100.0  3200.0
+1600.0  1800.0  2100.0  2400.0  3000.0  3100.0
+1500.0  1700.0  2100.0  2300.0  3000.0  3100.0
+1400.0  1700.0  2100.0  2500.0  3000.0  3200.0
+1000.0  1700.0  2300.0  2500.0  3200.0  3300.0
+1100.0  1700.0  2400.0  2500.0  3300.0  3400.0
+1500.0  2000.0  2300.0  2600.0  3000.0  3300.0
+1300.0  1600.0  1800.0  2600.0  2900.0  3100.0
+1300.0  1600.0  1900.0  2200.0  2900.0  3000.0
+1500.0  1700.0  2200.0  2500.0  2900.0  3000.0
+1500.0  1600.0  2100.0  2400.0  2900.0  3100.0
+1500.0  1600.0  2000.0  2600.0  3000.0  3100.0
+1600.0  1700.0  2100.0  2600.0  3100.0  3200.0
+1700.0  1900.0  2100.0  2500.0  3300.0  3400.0
+1700.0  1900.0  2200.0  2500.0  3300.0  3400.0
+1600.0  2000.0  2400.0  2600.0  3000.0  3300.0
+1700.0  2100.0  2400.0  2600.0  3100.0  3300.0
+1700.0  2100.0  2400.0  2600.0  3200.0  3400.0
+1400.0  1600.0  2300.0  2400.0  3300.0  3400.0
+1300.0  1400.0  2100.0  2200.0  2900.0  3200.0
+1000.0  1300.0  2200.0  2300.0  3200.0  3400.0
+1600.0  2000.0  2300.0  2600.0  2800.0  3100.0
+1600.0  2000.0  2300.0  2600.0  2900.0  3200.0
+1600.0  2000.0  2300.0  2600.0  3100.0  3300.0
+1700.0  2000.0  2300.0  2600.0  3100.0  3300.0
+1600.0  1900.0  2300.0  2500.0  3100.0  3400.0
+1500.0  1900.0  2300.0  2600.0  3000.0  3300.0
+1500.0  1900.0  2300.0  2600.0  3100.0  3300.0
+1500.0  2000.0  2300.0  2700.0  3100.0  3300.0
+2000.0  2500.0  2700.0  2900.0  3300.0  3400.0
+2000.0  2400.0  2600.0  2800.0  3300.0  3400.0
+1700.0  2300.0  2600.0  2800.0  3300.0  3400.0
+1400.0  1700.0  2400.0  2500.0  3200.0  3300.0
+1300.0  1600.0  2300.0  2500.0  3200.0  3300.0
+1300.0  1500.0  2000.0  2300.0  3200.0  3300.0
+1500.0  1800.0  2200.0  2400.0  2900.0  3300.0
+1500.0  1700.0  2200.0  2400.0  3000.0  3200.0
+1400.0  1800.0  2200.0  2400.0  3000.0  3300.0
+1400.0  1800.0  2200.0  2400.0  3000.0  3200.0
+1200.0  1500.0  2100.0  2400.0  3100.0  3300.0
+1300.0  1800.0  2200.0  2300.0  3300.0  3400.0
+1300.0  1700.0  2200.0  2400.0  3300.0  3400.0
+1400.0  1500.0  2300.0  2500.0  3100.0  3400.0
+1500.0  1600.0  2300.0  2500.0  3100.0  3300.0
+1500.0  1600.0  2400.0  2500.0  3100.0  3300.0
+1400.0  1800.0  2400.0  2500.0  3000.0  3300.0
+1300.0  1700.0  2100.0  2500.0  3000.0  3200.0
+1300.0  1600.0  2100.0  2500.0  3100.0  3200.0
+1300.0  1700.0  2200.0  2500.0  3100.0  3200.0
+1300.0  1600.0  2200.0  2500.0  3100.0  3300.0
+1300.0  1700.0  2300.0  2600.0  3200.0  3300.0
+1300.0  1700.0  2400.0  2500.0  3200.0  3400.0
+1500.0  1900.0  2500.0  2600.0  3200.0  3400.0
+1500.0  2000.0  2500.0  2600.0  3300.0  3400.0
+1600.0  2100.0  2600.0  2900.0  3400.0  3500.0
+1600.0  1900.0  2500.0  2800.0  3300.0  3400.0
+1500.0  2000.0  2500.0  2600.0  3200.0  3300.0
+1600.0  2000.0  2500.0  2700.0  3100.0  3200.0
+1500.0  1700.0  2400.0  2700.0  3100.0  3200.0
+1500.0  1600.0  2400.0  2600.0  3100.0  3300.0
+1500.0  1600.0  2200.0  2400.0  3000.0  3200.0
+1500.0  1600.0  2200.0  2300.0  3000.0  3200.0
+1400.0  1700.0  2100.0  2300.0  3000.0  3100.0
+1700.0  1800.0  2300.0  2800.0  3100.0  3300.0
+1800.0  2100.0  2500.0  2800.0  3200.0  3300.0
+1800.0  2200.0  2500.0  2700.0  3200.0  3300.0
+1900.0  2200.0  2500.0  2800.0  3200.0  3300.0
+1800.0  2200.0  2500.0  2800.0  3200.0  3300.0
+1600.0  2000.0  2300.0  2500.0  3000.0  3200.0
+1500.0  1900.0  2200.0  2500.0  3100.0  3200.0
+1500.0  1700.0  2200.0  2400.0  3100.0  3200.0
+1600.0  1700.0  2200.0  2400.0  3000.0  3100.0
+1600.0  1700.0  2300.0  2400.0  3000.0  3100.0
+1600.0  1700.0  2300.0  2400.0  3000.0  3200.0
+1600.0  1700.0  2300.0  2400.0  2900.0  3100.0
+1600.0  1700.0  2300.0  2400.0  2900.0  3200.0
+1600.0  1700.0  2300.0  2500.0  2900.0  3200.0
+1500.0  1600.0  2300.0  2500.0  2900.0  3300.0
+1400.0  1500.0  2200.0  2500.0  3000.0  3300.0
+1200.0  1400.0  2300.0  2400.0  3000.0  3300.0
+1100.0  1400.0  2300.0  2400.0  3100.0  3300.0
+1200.0  1800.0  2400.0  2500.0  3300.0  3400.0
+1400.0  2000.0  2400.0  2700.0  3300.0  3400.0
+1600.0  2100.0  2500.0  2800.0  3300.0  3400.0
+1700.0  2300.0  2600.0  2900.0  3300.0  3400.0
+1400.0  2100.0  2400.0  2600.0  3100.0  3200.0
+1300.0  1600.0  2300.0  2500.0  3000.0  3200.0
+1200.0  1500.0  2100.0  2500.0  3000.0  3200.0
+1300.0  1700.0  2100.0  2300.0  2900.0  3200.0
+1500.0  1600.0  2200.0  2400.0  3000.0  3100.0
+1500.0  1600.0  2200.0  2500.0  3000.0  3200.0
+1600.0  1700.0  2200.0  2500.0  3100.0  3200.0
+1600.0  1700.0  2200.0  2500.0  3100.0  3300.0
+1600.0  1700.0  2200.0  2400.0  3100.0  3300.0
+1600.0  1700.0  2300.0  2500.0  3300.0  3400.0
+1700.0  1800.0  2300.0  2500.0  3300.0  3400.0
+1800.0  2000.0  2300.0  2700.0  3200.0  3300.0
+1900.0  2000.0  2300.0  2700.0  3300.0  3400.0
+1900.0  2000.0  2100.0  2400.0  3300.0  3400.0
+1800.0  2100.0  2400.0  2800.0  3200.0  3400.0
+2000.0  2200.0  2500.0  2700.0  3100.0  3300.0
+2000.0  2300.0  2500.0  2700.0  3100.0  3300.0
+2000.0  2300.0  2500.0  2800.0  3300.0  3400.0
+1900.0  2300.0  2500.0  2800.0  3300.0  3400.0
+1800.0  1900.0  2300.0  2600.0  3300.0  3400.0
+1800.0  1900.0  2400.0  2600.0  3200.0  3300.0
+1700.0  1900.0  2400.0  2500.0  3200.0  3300.0
+1700.0  1800.0  2300.0  2600.0  3200.0  3300.0
+1600.0  1700.0  2300.0  2600.0  3200.0  3300.0
+1600.0  1900.0  2300.0  2600.0  3200.0  3300.0
+1500.0  1800.0  2200.0  2400.0  3200.0  3300.0
+1500.0  1800.0  2100.0  2500.0  3100.0  3200.0
+1700.0  2100.0  2400.0  2800.0  3200.0  3300.0
+1900.0  2100.0  2500.0  2900.0  3200.0  3300.0
+1900.0  2100.0  2400.0  2900.0  3200.0  3300.0
+1800.0  2100.0  2400.0  2800.0  3100.0  3200.0
+2000.0  2200.0  2500.0  2800.0  3100.0  3300.0
+2000.0  2200.0  2700.0  2800.0  3100.0  3300.0
+2000.0  2300.0  2600.0  2800.0  3200.0  3300.0
+1800.0  2000.0  2600.0  2800.0  3200.0  3300.0
+1800.0  2100.0  2600.0  2800.0  3200.0  3400.0
+1800.0  2200.0  2500.0  2700.0  3300.0  3400.0
+1700.0  1900.0  2500.0  2600.0  3200.0  3400.0
+1700.0  1900.0  2400.0  2700.0  3200.0  3400.0
+1500.0  1900.0  2500.0  2600.0  3100.0  3300.0
+1200.0  2100.0  2400.0  2600.0  3200.0  3300.0
+1300.0  1800.0  2400.0  2500.0  3200.0  3300.0
+1200.0  1600.0  2400.0  2600.0  3200.0  3300.0
+1200.0  1900.0  2500.0  2700.0  3200.0  3300.0
+1300.0  2000.0  2400.0  2700.0  3200.0  3300.0
+1200.0  1900.0  2300.0  2500.0  3200.0  3300.0
+1100.0  1800.0  2300.0  2400.0  3200.0  3300.0
+1100.0  1900.0  2300.0  2500.0  3200.0  3300.0
+1100.0  2100.0  2400.0  2600.0  3200.0  3300.0
+1000.0  1900.0  2400.0  2500.0  3200.0  3300.0
+1000.0  1500.0  2400.0  2500.0  3100.0  3200.0
+1000.0  1500.0  2300.0  2400.0  3100.0  3200.0
+1000.0  1900.0  2300.0  2500.0  3000.0  3100.0
+1100.0  1900.0  2300.0  2400.0  3100.0  3200.0
+1200.0  1800.0  2300.0  2400.0  3100.0  3200.0
+1300.0  1800.0  2300.0  2400.0  3100.0  3200.0
+1400.0  1800.0  2300.0  2400.0  3200.0  3300.0
+1600.0  1700.0  2300.0  2400.0  3100.0  3300.0
+1600.0  1700.0  2300.0  2400.0  3100.0  3200.0
+1600.0  1700.0  2200.0  2400.0  3100.0  3200.0
+1500.0  1800.0  2200.0  2400.0  3100.0  3200.0
+1400.0  1800.0  2200.0  2400.0  3100.0  3200.0
+1400.0  1800.0  2200.0  2400.0  3000.0  3100.0
+1800.0  2000.0  2300.0  2800.0  2900.0  3100.0
+1500.0  1900.0  2300.0  2500.0  3100.0  3200.0
+1500.0  1900.0  2300.0  2400.0  3300.0  3400.0
+1500.0  2000.0  2400.0  2600.0  3300.0  3400.0
+1600.0  2000.0  2400.0  2700.0  3300.0  3400.0
+1600.0  2000.0  2400.0  2500.0  3300.0  3400.0
+1600.0  2000.0  2400.0  2600.0  3300.0  3400.0
+1700.0  2100.0  2400.0  2600.0  2900.0  3200.0
+1600.0  2000.0  2500.0  2700.0  2900.0  3200.0
+1500.0  1800.0  2400.0  2800.0  3000.0  3200.0
+1500.0  1800.0  2100.0  2400.0  2900.0  3100.0
+1600.0  1900.0  2100.0  2400.0  3100.0  3300.0
+1600.0  1900.0  2100.0  2500.0  3100.0  3200.0
+1800.0  1900.0  2300.0  2400.0  3100.0  3300.0
+1900.0  2000.0  2500.0  2600.0  3200.0  3300.0
+1900.0  2200.0  2600.0  2700.0  3300.0  3400.0
+1900.0  2300.0  2600.0  2700.0  3300.0  3400.0
+1900.0  2300.0  2700.0  2800.0  3300.0  3400.0
+2000.0  2200.0  2700.0  2800.0  3300.0  3400.0
+2000.0  2400.0  2700.0  2800.0  3300.0  3400.0
+2000.0  2300.0  2700.0  2800.0  3300.0  3400.0
+2000.0  2400.0  2600.0  2700.0  3300.0  3400.0
+2000.0  2200.0  2600.0  2700.0  3200.0  3300.0
+1900.0  2100.0  2600.0  2700.0  3200.0  3300.0
+1900.0  2100.0  2500.0  2700.0  3200.0  3300.0
+1900.0  2000.0  2400.0  2600.0  3200.0  3300.0
+1900.0  2000.0  2400.0  2600.0  3100.0  3200.0
+1900.0  2000.0  2300.0  2500.0  3100.0  3200.0
+1800.0  2000.0  2300.0  2500.0  3100.0  3200.0
+1800.0  1900.0  2300.0  2500.0  3000.0  3100.0
+1800.0  1900.0  2400.0  2700.0  3000.0  3200.0
+1800.0  1900.0  2500.0  2700.0  3000.0  3200.0
+1800.0  2000.0  2500.0  2700.0  3100.0  3200.0
+2000.0  2300.0  2600.0  2900.0  3100.0  3300.0
+1900.0  2300.0  2700.0  3000.0  3200.0  3300.0
+2000.0  2400.0  2700.0  3000.0  3200.0  3300.0
+2100.0  2500.0  2800.0  3000.0  3200.0  3300.0
+2200.0  2400.0  2800.0  3000.0  3300.0  3400.0
+1900.0  2200.0  2700.0  2900.0  3300.0  3400.0
+2200.0  2400.0  2900.0  3100.0  3300.0  3400.0
+2100.0  2400.0  2800.0  3100.0  3300.0  3400.0
+2200.0  2500.0  2800.0  3100.0  3300.0  3400.0
+2100.0  2400.0  2600.0  2800.0  3300.0  3400.0
+2000.0  2400.0  2600.0  2700.0  3200.0  3300.0
+1700.0  2000.0  2400.0  2600.0  3200.0  3300.0
+1700.0  1900.0  2400.0  2600.0  3100.0  3300.0
+1800.0  1900.0  2400.0  2700.0  3200.0  3300.0
+1800.0  1900.0  2400.0  2700.0  3100.0  3200.0
+1800.0  1900.0  2400.0  2700.0  3100.0  3300.0
+1800.0  1900.0  2300.0  2700.0  3100.0  3200.0
+1700.0  1900.0  2200.0  2700.0  3000.0  3300.0
+1700.0  1800.0  2300.0  2700.0  2900.0  3200.0
+1700.0  1900.0  2300.0  2700.0  2900.0  3200.0
+1700.0  1900.0  2200.0  2700.0  3000.0  3200.0
+1700.0  2000.0  2300.0  2800.0  3000.0  3200.0
+1400.0  1700.0  2300.0  2400.0  3300.0  3400.0
+1400.0  1800.0  2300.0  2400.0  3300.0  3400.0
+1400.0  1900.0  2300.0  2400.0  3300.0  3400.0
+1400.0  2100.0  2300.0  2500.0  3300.0  3400.0
+1400.0  2100.0  2300.0  2600.0  3300.0  3400.0
+1700.0  2200.0  2500.0  2700.0  3200.0  3400.0
+1800.0  2100.0  2600.0  2900.0  3200.0  3400.0
+1800.0  2100.0  2600.0  2800.0  3300.0  3400.0
+1800.0  2100.0  2600.0  2700.0  3300.0  3400.0
+1800.0  2000.0  2500.0  2700.0  3300.0  3400.0
+1800.0  2100.0  2400.0  2700.0  3300.0  3400.0
+1800.0  2100.0  2400.0  2600.0  3300.0  3400.0
+1800.0  2200.0  2400.0  2600.0  3300.0  3400.0
+1800.0  2200.0  2400.0  2700.0  3300.0  3400.0
+1900.0  2300.0  2600.0  2900.0  3200.0  3400.0
+1900.0  2200.0  2600.0  2700.0  3200.0  3400.0
+1900.0  2100.0  2600.0  2700.0  3300.0  3400.0
+2000.0  2100.0  2500.0  2700.0  3200.0  3300.0
+2000.0  2100.0  2500.0  2700.0  3300.0  3400.0
+2000.0  2200.0  2500.0  2700.0  3300.0  3400.0
+2000.0  2100.0  2600.0  2700.0  3300.0  3400.0
+2000.0  2100.0  2500.0  2700.0  3400.0  3500.0
+1900.0  2100.0  2500.0  2600.0  3200.0  3400.0
+2000.0  2200.0  2600.0  2700.0  3200.0  3400.0
+2100.0  2300.0  2600.0  2800.0  3300.0  3400.0
+2100.0  2500.0  2700.0  3100.0  3300.0  3400.0
+2100.0  2500.0  2800.0  3100.0  3300.0  3400.0
+2100.0  2300.0  2400.0  2700.0  3200.0  3300.0
+2000.0  2300.0  2500.0  2800.0  3200.0  3300.0
+1700.0  2100.0  2500.0  2700.0  3200.0  3300.0
+1600.0  1900.0  2300.0  2700.0  3100.0  3300.0
+1600.0  1800.0  2300.0  2800.0  3100.0  3300.0
+1500.0  1800.0  2300.0  2400.0  3100.0  3200.0
+1500.0  1700.0  2300.0  2400.0  3100.0  3300.0
+1400.0  1700.0  2300.0  2400.0  3100.0  3300.0
+1400.0  1500.0  2300.0  2400.0  3100.0  3300.0
+1300.0  1500.0  2300.0  2400.0  3100.0  3300.0
+1300.0  1500.0  2400.0  2500.0  3100.0  3300.0
+1300.0  1500.0  2400.0  2500.0  3000.0  3300.0
+1300.0  1500.0  2300.0  2400.0  2900.0  3300.0
+1400.0  1500.0  2400.0  2500.0  2900.0  3300.0
+1500.0  1600.0  2300.0  2500.0  2800.0  3300.0
+1600.0  1700.0  2300.0  2500.0  2800.0  3400.0
+1700.0  1800.0  2300.0  2500.0  2800.0  3300.0
+1800.0  1900.0  2400.0  2500.0  3100.0  3400.0
+1800.0  1900.0  2400.0  2500.0  3200.0  3400.0
+1900.0  2000.0  2400.0  2500.0  3300.0  3400.0
+1900.0  2000.0  2300.0  2500.0  3300.0  3400.0
+1900.0  2200.0  2600.0  2900.0  3400.0  3500.0
+1800.0  2200.0  2600.0  2900.0  3300.0  3400.0
+1900.0  2300.0  2600.0  3000.0  3400.0  3500.0
+2000.0  2300.0  2600.0  3000.0  3300.0  3400.0
+1800.0  2200.0  2500.0  2900.0  3200.0  3300.0
+1800.0  2100.0  2400.0  2700.0  3200.0  3300.0
+1900.0  2100.0  2500.0  2800.0  3200.0  3300.0
+1700.0  2100.0  2500.0  2700.0  3100.0  3300.0
+1400.0  1800.0  2300.0  2600.0  3100.0  3200.0
+1300.0  1600.0  1700.0  2400.0  3000.0  3100.0
+1500.0  1800.0  2300.0  2600.0  3000.0  3200.0
+1900.0  2200.0  2500.0  2800.0  3000.0  3300.0
+2000.0  2300.0  2600.0  2800.0  3100.0  3300.0
+2000.0  2300.0  2700.0  2900.0  3100.0  3300.0
+2100.0  2300.0  2700.0  2900.0  3100.0  3300.0
+2000.0  2300.0  2700.0  3000.0  3300.0  3400.0
+1700.0  2200.0  2500.0  2600.0  3300.0  3400.0
+1400.0  2000.0  2400.0  2600.0  3300.0  3400.0
+1300.0  1900.0  2300.0  2600.0  3100.0  3300.0
+1200.0  1600.0  2200.0  2400.0  3000.0  3100.0
+1100.0  1500.0  2200.0  2400.0  3100.0  3200.0
+1100.0  1400.0  2300.0  2400.0  3200.0  3300.0
+1100.0  1500.0  2300.0  2400.0  3200.0  3300.0
+1100.0  1500.0  2300.0  2400.0  3300.0  3400.0
+1300.0  1400.0  2400.0  2500.0  3100.0  3300.0
+1500.0  2200.0  2500.0  2600.0  3100.0  3200.0
+2100.0  2400.0  2700.0  3000.0  3200.0  3300.0
+2200.0  2400.0  2700.0  3000.0  3300.0  3400.0
+2000.0  2400.0  2700.0  3000.0  3300.0  3400.0
+2000.0  2400.0  2700.0  2900.0  3300.0  3400.0
+2000.0  2300.0  2700.0  3000.0  3400.0  3500.0
+2100.0  2400.0  2700.0  3000.0  3400.0  3500.0
+2100.0  2500.0  2700.0  3100.0  3400.0  3500.0
+1900.0  2400.0  2600.0  2800.0  3300.0  3400.0
+1900.0  2100.0  2600.0  2800.0  3300.0  3400.0
+1900.0  2100.0  2500.0  2700.0  3300.0  3400.0
+1900.0  2100.0  2500.0  2600.0  3300.0  3400.0
+1800.0  2200.0  2400.0  2800.0  3300.0  3400.0
+1800.0  2000.0  2400.0  2700.0  3300.0  3400.0
+1900.0  2000.0  2400.0  2700.0  3200.0  3300.0
+2000.0  2100.0  2400.0  2600.0  3300.0  3400.0
+1500.0  2100.0  2200.0  2500.0  3300.0  3400.0
+1400.0  1900.0  2300.0  2500.0  3300.0  3400.0
+1400.0  2000.0  2300.0  2600.0  3200.0  3300.0
+1400.0  1800.0  2200.0  2600.0  3100.0  3200.0
+1700.0  2100.0  2400.0  2700.0  3100.0  3300.0
+1800.0  2000.0  2400.0  2700.0  3000.0  3200.0
+1600.0  2000.0  2300.0  2500.0  3100.0  3200.0
+1700.0  2000.0  2300.0  2500.0  3100.0  3300.0
+1600.0  1900.0  2200.0  2600.0  2900.0  3200.0
+1600.0  1900.0  2300.0  2600.0  2900.0  3200.0
+1600.0  1900.0  2300.0  2600.0  3000.0  3200.0
+1600.0  1800.0  2200.0  2500.0  3000.0  3200.0
+1600.0  1800.0  2300.0  2600.0  3100.0  3200.0
+1700.0  1800.0  2400.0  2600.0  3100.0  3200.0
+1700.0  1800.0  2300.0  2500.0  3000.0  3100.0
+1700.0  1800.0  2300.0  2500.0  3100.0  3200.0
+1700.0  1800.0  2200.0  2400.0  3000.0  3200.0
+1700.0  1800.0  2100.0  2300.0  3100.0  3200.0
+1700.0  1900.0  2100.0  2400.0  3000.0  3200.0
+1800.0  2000.0  2200.0  2400.0  3000.0  3200.0
+1800.0  2000.0  2300.0  2500.0  3100.0  3300.0
+1800.0  2000.0  2300.0  2600.0  3200.0  3300.0
+1800.0  2000.0  2400.0  2600.0  3200.0  3300.0
+1800.0  2000.0  2400.0  2600.0  3300.0  3400.0
+1800.0  1900.0  2400.0  2500.0  3300.0  3400.0
+1700.0  1900.0  2400.0  2500.0  3300.0  3400.0
+1700.0  2100.0  2400.0  2600.0  3300.0  3400.0
+1800.0  2100.0  2500.0  2900.0  3300.0  3400.0
+1800.0  2200.0  2600.0  2800.0  3300.0  3500.0
+1800.0  2100.0  2600.0  2900.0  3300.0  3400.0
+1800.0  2100.0  2600.0  3000.0  3200.0  3300.0
+1800.0  2200.0  2600.0  2900.0  3200.0  3300.0
+1800.0  2100.0  2600.0  2800.0  3200.0  3300.0
+1900.0  2200.0  2400.0  2700.0  3100.0  3200.0
+1700.0  2000.0  2300.0  2700.0  3000.0  3100.0
+1700.0  2000.0  2300.0  2600.0  3000.0  3100.0
+1800.0  2100.0  2400.0  2600.0  3100.0  3200.0
+1800.0  2100.0  2400.0  2700.0  3100.0  3200.0
+1900.0  2100.0  2400.0  2700.0  3200.0  3300.0
+1800.0  2000.0  2400.0  2700.0  3100.0  3300.0
+1700.0  2000.0  2400.0  2700.0  3100.0  3300.0
+1700.0  1900.0  2300.0  2700.0  3100.0  3300.0
+1700.0  2000.0  2300.0  2600.0  3100.0  3200.0
+1600.0  1900.0  2300.0  2600.0  3100.0  3200.0
+1400.0  1700.0  2200.0  2500.0  3000.0  3200.0
+1500.0  1700.0  2100.0  2500.0  2900.0  3100.0
+1500.0  1800.0  2300.0  2600.0  2900.0  3200.0
+1500.0  1900.0  2400.0  2600.0  3000.0  3200.0
+1600.0  2000.0  2300.0  2700.0  3100.0  3200.0
+1600.0  2000.0  2400.0  2700.0  3100.0  3300.0
+1600.0  2200.0  2600.0  2900.0  3300.0  3400.0
+1700.0  2200.0  2600.0  3000.0  3300.0  3400.0
+1700.0  2100.0  2500.0  2900.0  3300.0  3400.0
+1700.0  2200.0  2500.0  2900.0  3300.0  3400.0
+1500.0  1800.0  2400.0  2500.0  3200.0  3400.0
+1500.0  1700.0  2400.0  2500.0  3300.0  3400.0
+1500.0  1700.0  2300.0  2400.0  3300.0  3400.0
+1600.0  1800.0  2300.0  2400.0  3300.0  3400.0
+1600.0  1800.0  2400.0  2500.0  3300.0  3400.0
+1600.0  1700.0  2400.0  2500.0  2800.0  3300.0
+1600.0  1800.0  2300.0  2500.0  2700.0  3200.0
+1600.0  1700.0  2300.0  2500.0  2700.0  3200.0
+1600.0  1700.0  2200.0  2500.0  2700.0  3100.0
+1600.0  1700.0  2200.0  2500.0  2600.0  3000.0
+1600.0  1700.0  2400.0  2500.0  2700.0  3200.0
+1600.0  1700.0  2400.0  2500.0  2800.0  3200.0
+1700.0  1800.0  2400.0  2600.0  2900.0  3300.0
+1700.0  1800.0  2300.0  2600.0  2800.0  3300.0
+1700.0  1800.0  2400.0  2600.0  3000.0  3400.0
+1700.0  1800.0  2300.0  2500.0  2900.0  3300.0
+1600.0  1700.0  2300.0  2500.0  3000.0  3300.0
+1400.0  1800.0  2000.0  2400.0  3000.0  3200.0
+1400.0  1700.0  2000.0  2300.0  3000.0  3200.0
+1700.0  2000.0  2300.0  2500.0  3100.0  3200.0
+1700.0  1800.0  2400.0  2500.0  3100.0  3200.0
+1800.0  2000.0  2400.0  2500.0  3200.0  3300.0
+1900.0  2000.0  2400.0  2600.0  3300.0  3400.0
+1900.0  2000.0  2300.0  2600.0  3300.0  3400.0
+2000.0  2100.0  2200.0  2600.0  3300.0  3400.0
+2000.0  2100.0  2300.0  2600.0  3300.0  3400.0
+2100.0  2200.0  2500.0  2800.0  3300.0  3400.0
+2000.0  2100.0  2300.0  2500.0  3200.0  3300.0
+1900.0  2000.0  2200.0  2600.0  3200.0  3300.0
+1800.0  1900.0  2100.0  2600.0  3100.0  3200.0
+1700.0  1900.0  2100.0  2600.0  3000.0  3200.0
+1500.0  1800.0  2100.0  2300.0  3000.0  3200.0
+1500.0  1800.0  2100.0  2400.0  3100.0  3300.0
+1500.0  1700.0  2200.0  2500.0  3100.0  3300.0
+1500.0  1800.0  2200.0  2300.0  3200.0  3300.0
+1500.0  1900.0  2300.0  2500.0  3300.0  3400.0
+1800.0  2300.0  2600.0  3000.0  3400.0  3500.0
+1900.0  2300.0  2700.0  3000.0  3400.0  3500.0
+2000.0  2300.0  2800.0  3100.0  3300.0  3400.0
+2100.0  2300.0  2800.0  3100.0  3300.0  3400.0
+2000.0  2300.0  2700.0  3000.0  3200.0  3300.0
+2000.0  2200.0  2600.0  2900.0  3100.0  3300.0
+2000.0  2200.0  2500.0  2800.0  3000.0  3200.0
+2000.0  2200.0  2400.0  2800.0  3100.0  3200.0
+1600.0  2000.0  2400.0  2600.0  3100.0  3200.0
+1400.0  1900.0  2400.0  2500.0  3100.0  3200.0
+1400.0  1900.0  2300.0  2600.0  3000.0  3200.0
+1500.0  2000.0  2400.0  2700.0  2900.0  3200.0
+2000.0  2300.0  2800.0  3000.0  3200.0  3400.0
+2100.0  2300.0  2900.0  3100.0  3300.0  3400.0
+1800.0  2300.0  2600.0  2900.0  3400.0  3500.0
+1700.0  2300.0  2500.0  2900.0  3300.0  3400.0
+1300.0  2000.0  2400.0  2700.0  3300.0  3400.0
+1200.0  1900.0  2300.0  2600.0  3300.0  3400.0
+1200.0  1800.0  2300.0  2600.0  3300.0  3400.0
+1100.0  1800.0  2300.0  2500.0  3300.0  3400.0
+1800.0  2200.0  2600.0  2800.0  3300.0  3400.0
+1800.0  2000.0  2500.0  2700.0  3200.0  3400.0
+1700.0  2100.0  2600.0  2700.0  3200.0  3300.0
+1700.0  2200.0  2600.0  2800.0  3300.0  3400.0
+1800.0  2200.0  2600.0  3000.0  3300.0  3500.0
+1700.0  2100.0  2600.0  2800.0  3300.0  3400.0
+1700.0  2100.0  2500.0  2800.0  3300.0  3400.0
+1700.0  2200.0  2500.0  2800.0  3300.0  3400.0
+1700.0  2200.0  2500.0  2800.0  3300.0  3500.0
+1800.0  2200.0  2500.0  2900.0  3300.0  3400.0
+2100.0  2200.0  2600.0  2700.0  3100.0  3400.0
+1900.0  2100.0  2500.0  2600.0  3100.0  3400.0
+1900.0  2000.0  2500.0  2600.0  3200.0  3400.0
+1900.0  2000.0  2600.0  2700.0  3200.0  3400.0
+1800.0  1900.0  2500.0  2600.0  3100.0  3400.0
+1600.0  2000.0  2700.0  2800.0  3300.0  3400.0
+1400.0  2000.0  2700.0  2800.0  3300.0  3400.0
+1000.0  1900.0  2700.0  2800.0  3300.0  3400.0
+1000.0  1400.0  2700.0  2900.0  3200.0  3400.0
+1100.0  1500.0  2700.0  2900.0  3200.0  3300.0
+1200.0  1700.0  2400.0  2500.0  3100.0  3300.0
+1300.0  1900.0  2400.0  2500.0  3300.0  3400.0
+1300.0  2000.0  2400.0  2600.0  3200.0  3300.0
+1400.0  2000.0  2400.0  2600.0  3100.0  3300.0
+1500.0  2000.0  2400.0  2700.0  3000.0  3300.0
+1300.0  2100.0  2400.0  2700.0  3200.0  3300.0
+1400.0  1900.0  2700.0  2800.0  3300.0  3400.0
+1500.0  1900.0  2700.0  2800.0  3300.0  3400.0
+1400.0  1800.0  2600.0  2700.0  3200.0  3400.0
+1800.0  2300.0  2600.0  2700.0  2900.0  3200.0
+1500.0  1700.0  2400.0  2600.0  2800.0  3300.0
+1600.0  1700.0  2500.0  2700.0  2900.0  3300.0
+1800.0  1900.0  2600.0  2700.0  3200.0  3400.0
+1800.0  1900.0  2600.0  2700.0  3200.0  3300.0
+2000.0  2200.0  2600.0  2800.0  3200.0  3300.0
+2000.0  2100.0  2600.0  2700.0  3200.0  3400.0
+2000.0  2100.0  2500.0  2800.0  3200.0  3400.0
+2000.0  2100.0  2600.0  2700.0  3100.0  3300.0
+1900.0  2000.0  2400.0  2600.0  3100.0  3300.0
+1800.0  1900.0  2400.0  2600.0  3100.0  3200.0
+1700.0  2000.0  2300.0  2400.0  3200.0  3300.0
+1900.0  2100.0  2500.0  2700.0  3200.0  3400.0
+1900.0  2000.0  2500.0  2700.0  3200.0  3400.0
+1800.0  2000.0  2500.0  2600.0  3200.0  3300.0
+1800.0  2100.0  2500.0  2700.0  3200.0  3400.0
+1800.0  2000.0  2500.0  2600.0  3200.0  3400.0
+1800.0  1900.0  2400.0  2500.0  3000.0  3300.0
+1800.0  2000.0  2400.0  2600.0  3100.0  3300.0
+1900.0  2100.0  2500.0  2600.0  3200.0  3300.0
+2000.0  2100.0  2500.0  2600.0  3300.0  3400.0
+2000.0  2200.0  2500.0  2600.0  3300.0  3400.0
+2100.0  2200.0  2500.0  2600.0  3300.0  3400.0
+2100.0  2200.0  2500.0  2600.0  3200.0  3400.0
+2100.0  2200.0  2400.0  2500.0  3200.0  3400.0
+2000.0  2100.0  2400.0  2500.0  3200.0  3400.0
+1800.0  1900.0  2400.0  2600.0  3200.0  3400.0
+1800.0  1900.0  2500.0  2600.0  3200.0  3400.0
+1800.0  2300.0  2700.0  2900.0  3300.0  3400.0
+1900.0  2400.0  2800.0  3000.0  3300.0  3500.0
+1900.0  2300.0  2800.0  3100.0  3300.0  3400.0
+2000.0  2300.0  2700.0  2900.0  3200.0  3400.0
+1800.0  2000.0  2600.0  2900.0  3300.0  3400.0
+1700.0  2000.0  2500.0  2600.0  3200.0  3400.0
+1600.0  2100.0  2500.0  2600.0  3300.0  3400.0
+1500.0  2100.0  2500.0  2600.0  3300.0  3400.0
+1500.0  2000.0  2400.0  2500.0  3200.0  3300.0
+1400.0  2000.0  2400.0  2600.0  3200.0  3300.0
+1300.0  1900.0  2400.0  2600.0  3100.0  3300.0
+1300.0  2000.0  2600.0  2800.0  3300.0  3400.0
+1500.0  2000.0  2600.0  2700.0  3300.0  3400.0
+1600.0  2000.0  2500.0  2700.0  3200.0  3400.0
+1600.0  2000.0  2500.0  2600.0  3200.0  3400.0
+1600.0  2000.0  2400.0  2500.0  3200.0  3400.0
+1700.0  2000.0  2300.0  2500.0  3300.0  3400.0
+1600.0  1900.0  2300.0  2400.0  3300.0  3400.0
+1500.0  1700.0  2200.0  2400.0  3200.0  3300.0
+1500.0  1800.0  2200.0  2500.0  2900.0  3200.0
+1300.0  1700.0  2200.0  2500.0  3000.0  3300.0
+1200.0  1700.0  2200.0  2600.0  3000.0  3200.0
+1100.0  1700.0  2300.0  2600.0  3100.0  3300.0
+1200.0  1800.0  2300.0  2500.0  3300.0  3400.0
+1100.0  2100.0  2400.0  2600.0  3300.0  3400.0
+1200.0  2200.0  2400.0  2700.0  3300.0  3400.0
+1200.0  2300.0  2500.0  2700.0  3300.0  3400.0
+1200.0  2300.0  2500.0  2800.0  3300.0  3400.0
+1200.0  2300.0  2600.0  2800.0  3300.0  3400.0
+1100.0  1800.0  2500.0  2600.0  3400.0  3500.0
+1300.0  1700.0  2500.0  2600.0  3200.0  3400.0
+1400.0  1800.0  2500.0  2600.0  3200.0  3400.0
+1500.0  1900.0  2500.0  2600.0  3200.0  3300.0
+1500.0  1900.0  2500.0  2700.0  3200.0  3300.0
+1800.0  1900.0  2500.0  2700.0  3100.0  3200.0
+1900.0  2100.0  2400.0  2500.0  3200.0  3300.0
+2000.0  2100.0  2300.0  2500.0  3300.0  3400.0
+1500.0  1900.0  2400.0  2800.0  3100.0  3300.0
+1200.0  1700.0  2500.0  2600.0  3300.0  3400.0
+1300.0  1900.0  2500.0  2600.0  3300.0  3400.0
+1400.0  1800.0  2500.0  2700.0  3300.0  3400.0
+1300.0  1700.0  2400.0  2700.0  3200.0  3400.0
+1100.0  2100.0  2600.0  2700.0  3300.0  3400.0
+1200.0  2100.0  2600.0  2700.0  3300.0  3400.0
+1200.0  2100.0  2500.0  2700.0  3300.0  3400.0
+1200.0  2100.0  2500.0  2600.0  3300.0  3400.0
+1200.0  2000.0  2500.0  2600.0  3300.0  3400.0
+1200.0  2200.0  2500.0  2700.0  3400.0  3500.0
+1400.0  1800.0  2400.0  2600.0  3100.0  3400.0
+1400.0  1900.0  2400.0  2600.0  3100.0  3300.0
+1500.0  1800.0  2400.0  2700.0  3100.0  3300.0
+1500.0  1900.0  2400.0  2600.0  3200.0  3400.0
+1600.0  2100.0  2400.0  2600.0  3300.0  3400.0
+1900.0  2200.0  2400.0  2600.0  3300.0  3400.0
+2000.0  2200.0  2400.0  2600.0  3200.0  3300.0
+2000.0  2100.0  2400.0  2500.0  3200.0  3300.0
+2100.0  2200.0  2500.0  2600.0  3200.0  3300.0
+2100.0  2200.0  2500.0  2700.0  3200.0  3300.0
+2000.0  2100.0  2400.0  2600.0  3100.0  3200.0
+1500.0  2100.0  2300.0  2600.0  3100.0  3200.0
+1500.0  1900.0  2300.0  2400.0  3100.0  3300.0
+1500.0  1800.0  2300.0  2400.0  3100.0  3300.0
+1400.0  1800.0  2300.0  2400.0  3100.0  3300.0
+1400.0  1900.0  2300.0  2500.0  3100.0  3300.0
+1600.0  1900.0  2500.0  2600.0  3200.0  3300.0
+1500.0  1800.0  2300.0  2600.0  3100.0  3300.0
+1400.0  1700.0  2200.0  2600.0  3100.0  3200.0
+1400.0  1600.0  2200.0  2500.0  3000.0  3200.0
+1300.0  1700.0  2400.0  2600.0  3100.0  3200.0
+1400.0  1700.0  2200.0  2500.0  3200.0  3300.0
+1400.0  1800.0  2300.0  2500.0  3200.0  3300.0
+1300.0  1900.0  2200.0  2400.0  3200.0  3300.0
+1100.0  1500.0  2300.0  2400.0  3200.0  3400.0
+1000.0  1600.0  2500.0  2600.0  3300.0  3400.0
+1000.0  1700.0  2500.0  2600.0  3300.0  3400.0
+1000.0  1800.0  2600.0  2700.0  3300.0  3400.0
+1000.0  1900.0  2600.0  2700.0  3300.0  3400.0
+1000.0  1800.0  2800.0  2900.0  3300.0  3400.0
+1400.0  1600.0  2500.0  2600.0  3100.0  3400.0
+1600.0  1700.0  2500.0  2600.0  3100.0  3400.0
+1600.0  1700.0  2500.0  2600.0  3000.0  3400.0
+1700.0  1800.0  2500.0  2600.0  3000.0  3400.0
+1700.0  1800.0  2400.0  2600.0  2800.0  3300.0
+1700.0  1800.0  2400.0  2600.0  2900.0  3400.0
+1700.0  1800.0  2500.0  2600.0  3200.0  3400.0
+1700.0  1800.0  2500.0  2600.0  3100.0  3400.0
+1600.0  1800.0  2500.0  2600.0  3200.0  3400.0
+1600.0  1800.0  2600.0  2700.0  3200.0  3400.0
+1600.0  1900.0  2600.0  2700.0  3300.0  3400.0
+1600.0  2000.0  2600.0  2700.0  3200.0  3400.0
+1800.0  2300.0  2800.0  3000.0  3300.0  3400.0
+1800.0  2100.0  2800.0  3100.0  3300.0  3400.0
+1900.0  2100.0  2700.0  2900.0  3300.0  3400.0
+1800.0  2000.0  2600.0  2800.0  3200.0  3400.0
+1700.0  1900.0  2500.0  2800.0  3100.0  3300.0
+1700.0  1800.0  2400.0  2600.0  3000.0  3300.0
+1700.0  1800.0  2500.0  2700.0  3000.0  3400.0
+1700.0  1900.0  2600.0  2700.0  3100.0  3400.0
+1600.0  1900.0  2600.0  2700.0  3000.0  3300.0
+1700.0  2000.0  2600.0  2700.0  3100.0  3300.0
+1700.0  1900.0  2600.0  2700.0  3200.0  3300.0
+1700.0  1900.0  2600.0  2800.0  3200.0  3300.0
+1600.0  1900.0  2600.0  2800.0  3200.0  3400.0
+1200.0  1800.0  2700.0  2800.0  3200.0  3400.0
+1100.0  1700.0  2700.0  2800.0  3200.0  3300.0
+1500.0  1800.0  2600.0  2700.0  3100.0  3400.0
+1500.0  1800.0  2500.0  2600.0  3100.0  3400.0
+1600.0  1800.0  2500.0  2600.0  3100.0  3400.0
+1600.0  1800.0  2400.0  2500.0  3100.0  3400.0
+1500.0  1700.0  2400.0  2500.0  3000.0  3400.0
+1400.0  1600.0  2400.0  2500.0  3000.0  3400.0
+1400.0  1600.0  2400.0  2600.0  2900.0  3300.0
+1200.0  1700.0  2600.0  2700.0  3100.0  3300.0
+1200.0  1800.0  2600.0  2700.0  3200.0  3400.0
+1100.0  1900.0  2600.0  2700.0  3200.0  3400.0
+1400.0  1800.0  2500.0  2700.0  3200.0  3400.0
+1700.0  1900.0  2500.0  2600.0  2900.0  3300.0
+1600.0  1700.0  2500.0  2700.0  3000.0  3400.0
+1400.0  1500.0  2500.0  2700.0  3200.0  3400.0
+1400.0  1700.0  2500.0  2700.0  3000.0  3300.0
+1800.0  2000.0  2200.0  2600.0  2900.0  3200.0
+1900.0  2100.0  2400.0  2600.0  3100.0  3300.0
+1900.0  2300.0  2400.0  2700.0  3200.0  3300.0
+1800.0  2200.0  2400.0  2700.0  3200.0  3300.0
+1600.0  1900.0  2200.0  2400.0  3000.0  3200.0
+1500.0  1900.0  2100.0  2500.0  3100.0  3200.0
+1500.0  1900.0  2100.0  2400.0  3100.0  3200.0
+1400.0  1900.0  2100.0  2500.0  3200.0  3300.0
+1300.0  2000.0  2200.0  2500.0  3200.0  3300.0
+1200.0  2000.0  2200.0  2500.0  3200.0  3300.0
+1200.0  2100.0  2300.0  2600.0  3200.0  3300.0
+1100.0  2000.0  2500.0  2600.0  3300.0  3400.0
+1200.0  2200.0  2500.0  2600.0  3300.0  3400.0
+1500.0  1800.0  2400.0  2500.0  3300.0  3400.0
+1800.0  1900.0  2300.0  2400.0  3300.0  3400.0
+2100.0  2200.0  2400.0  2600.0  3300.0  3400.0
+2200.0  2300.0  2600.0  2700.0  3300.0  3400.0
+2200.0  2300.0  2600.0  2800.0  3300.0  3400.0
+2100.0  2300.0  2500.0  2800.0  3100.0  3300.0
+2200.0  2300.0  2600.0  2700.0  3100.0  3400.0
+2100.0  2200.0  2600.0  2700.0  3200.0  3400.0
+1900.0  2300.0  2600.0  2900.0  3100.0  3300.0
+2000.0  2300.0  2600.0  2900.0  3200.0  3300.0
+2200.0  2300.0  2700.0  2900.0  3300.0  3400.0
+2000.0  2300.0  2500.0  2900.0  3300.0  3400.0
+1500.0  1700.0  2200.0  2600.0  3100.0  3300.0
+1500.0  1700.0  2200.0  2600.0  3000.0  3300.0
+1500.0  1800.0  2200.0  2600.0  3100.0  3300.0
+1500.0  1800.0  2000.0  2300.0  3200.0  3300.0
+1600.0  1800.0  2000.0  2300.0  3200.0  3300.0
+1600.0  1900.0  2100.0  2300.0  3200.0  3300.0
+1700.0  1900.0  2200.0  2400.0  3200.0  3300.0
+1700.0  1900.0  2300.0  2400.0  3300.0  3400.0
+1800.0  1900.0  2300.0  2500.0  3300.0  3400.0
+1800.0  2000.0  2400.0  2500.0  3200.0  3400.0
+1800.0  2000.0  2400.0  2600.0  3100.0  3400.0
+1800.0  1900.0  2400.0  2600.0  3100.0  3400.0
+1400.0  1600.0  2500.0  2600.0  2900.0  3300.0
+1300.0  1500.0  2500.0  2600.0  2900.0  3300.0
+1300.0  1700.0  2300.0  2700.0  3000.0  3200.0
+1600.0  1900.0  2400.0  2800.0  3100.0  3200.0
+1500.0  2000.0  2400.0  2800.0  3100.0  3300.0
+1100.0  1700.0  2600.0  2700.0  3200.0  3400.0
+1100.0  1800.0  2600.0  2700.0  3300.0  3400.0
+1100.0  1800.0  2700.0  2800.0  3300.0  3400.0
+1700.0  2000.0  2600.0  2700.0  3100.0  3400.0
+1700.0  2100.0  2500.0  2600.0  3000.0  3200.0
+1700.0  2200.0  2600.0  2700.0  3100.0  3200.0
+1700.0  2000.0  2500.0  2600.0  3000.0  3200.0
+1700.0  1900.0  2500.0  2600.0  3000.0  3300.0
+1700.0  1900.0  2400.0  2600.0  3000.0  3300.0
+2000.0  2200.0  2400.0  2600.0  3300.0  3400.0
+1800.0  2100.0  2400.0  2500.0  3300.0  3400.0
+1700.0  2100.0  2400.0  2500.0  3300.0  3400.0
+1500.0  2100.0  2400.0  2500.0  3300.0  3400.0
+1600.0  2100.0  2400.0  2500.0  3300.0  3400.0
+1700.0  2000.0  2300.0  2400.0  3300.0  3400.0
+1700.0  2000.0  2400.0  2500.0  3300.0  3400.0
+1800.0  2000.0  2400.0  2500.0  3300.0  3400.0
+1900.0  2000.0  2400.0  2500.0  3100.0  3400.0
+1900.0  2000.0  2400.0  2500.0  3000.0  3400.0
+1900.0  2000.0  2300.0  2400.0  2800.0  3300.0
+1800.0  2000.0  2200.0  2400.0  2600.0  3200.0
+1900.0  2000.0  2300.0  2500.0  2800.0  3200.0
+1700.0  2000.0  2300.0  2700.0  3100.0  3300.0
+1700.0  1900.0  2500.0  2800.0  3200.0  3300.0
+1700.0  2000.0  2500.0  2800.0  3300.0  3400.0
+1700.0  2000.0  2600.0  2900.0  3300.0  3400.0
+1700.0  1800.0  2500.0  2700.0  3200.0  3400.0
+1600.0  1700.0  2400.0  2600.0  2900.0  3300.0
+1600.0  1700.0  2500.0  2600.0  2900.0  3300.0
+1600.0  1800.0  2600.0  2700.0  3100.0  3400.0
+1600.0  1700.0  2600.0  2700.0  3000.0  3300.0
+1600.0  1700.0  2600.0  2700.0  3100.0  3300.0
+1700.0  1900.0  2500.0  2800.0  3200.0  3400.0
+2100.0  2500.0  2700.0  3000.0  3300.0  3400.0
+2100.0  2400.0  2700.0  2900.0  3300.0  3400.0
+2200.0  2500.0  2700.0  3000.0  3300.0  3400.0
+2200.0  2500.0  2800.0  2900.0  3400.0  3500.0
+2200.0  2500.0  2800.0  2900.0  3300.0  3500.0
+2100.0  2500.0  2700.0  2800.0  3300.0  3400.0
+2100.0  2400.0  2700.0  2900.0  3200.0  3400.0
+2100.0  2300.0  2600.0  2800.0  3100.0  3400.0
+2100.0  2200.0  2500.0  2700.0  3100.0  3400.0
+2200.0  2300.0  2500.0  2700.0  3200.0  3400.0
+1900.0  2100.0  2400.0  2500.0  3200.0  3400.0
+1700.0  2000.0  2400.0  2500.0  3200.0  3300.0
+1500.0  1900.0  2400.0  2500.0  3100.0  3300.0
+1400.0  1900.0  2500.0  2600.0  3300.0  3400.0
+1200.0  1900.0  2600.0  2700.0  3300.0  3400.0
+1100.0  2000.0  2600.0  2700.0  3300.0  3400.0
+1100.0  1700.0  2600.0  2700.0  3300.0  3400.0
+1300.0  1600.0  2500.0  2600.0  3100.0  3400.0
+1500.0  1600.0  2400.0  2500.0  3000.0  3400.0
+1600.0  1700.0  2400.0  2500.0  3100.0  3400.0
+1900.0  2000.0  2300.0  2500.0  2900.0  3400.0
+1900.0  2000.0  2400.0  2500.0  2800.0  3300.0
+1900.0  2000.0  2500.0  2700.0  3300.0  3400.0
+1900.0  2000.0  2500.0  2800.0  3300.0  3400.0
+2000.0  2200.0  2700.0  2900.0  3300.0  3400.0
+1900.0  2200.0  2700.0  2800.0  3200.0  3300.0
+1900.0  2200.0  2700.0  2900.0  3200.0  3300.0
+2000.0  2300.0  2700.0  2900.0  3200.0  3300.0
+2200.0  2600.0  2700.0  2900.0  3300.0  3400.0
+2100.0  2400.0  2700.0  2800.0  3300.0  3400.0
+2100.0  2200.0  2500.0  2700.0  3300.0  3400.0
+1900.0  2100.0  2400.0  2500.0  3300.0  3400.0
+1600.0  2000.0  2400.0  2500.0  3200.0  3300.0
+1500.0  2000.0  2400.0  2500.0  3300.0  3400.0
+1200.0  1900.0  2400.0  2500.0  3300.0  3500.0
+1200.0  1600.0  2400.0  2500.0  3200.0  3400.0
+1700.0  2100.0  2600.0  2900.0  3300.0  3400.0
+1800.0  2200.0  2700.0  3000.0  3300.0  3400.0
+1800.0  2200.0  2800.0  3000.0  3300.0  3400.0
+1700.0  2100.0  2600.0  2900.0  3200.0  3400.0
+1700.0  2000.0  2600.0  2800.0  3200.0  3400.0
+1600.0  1800.0  2500.0  2700.0  3200.0  3400.0
+1500.0  1700.0  2500.0  2600.0  3200.0  3400.0
+1500.0  1700.0  2400.0  2600.0  3200.0  3300.0
+1500.0  1800.0  2400.0  2600.0  3200.0  3300.0
+1500.0  1800.0  2300.0  2500.0  3200.0  3400.0
+1400.0  1800.0  2300.0  2500.0  3300.0  3400.0
+1400.0  1800.0  2300.0  2400.0  3200.0  3400.0
+1600.0  1900.0  2500.0  2600.0  3200.0  3400.0
+1500.0  1900.0  2600.0  2700.0  3200.0  3400.0
+1500.0  1900.0  2600.0  2700.0  3300.0  3400.0
+1400.0  1900.0  2600.0  2700.0  3300.0  3400.0
+1400.0  1900.0  2600.0  2700.0  3200.0  3400.0
+1500.0  1700.0  2600.0  2700.0  3100.0  3300.0
+1600.0  1800.0  2600.0  2700.0  3100.0  3200.0
+1900.0  2100.0  2700.0  2900.0  3200.0  3300.0
+2000.0  2100.0  2500.0  2700.0  3200.0  3400.0
+2000.0  2100.0  2400.0  2600.0  3100.0  3400.0
+2000.0  2100.0  2300.0  2600.0  3000.0  3300.0
+1900.0  2000.0  2300.0  2500.0  3000.0  3400.0
+1800.0  1900.0  2300.0  2400.0  3000.0  3400.0
+1600.0  1800.0  2300.0  2400.0  3000.0  3400.0
+1400.0  1700.0  2400.0  2500.0  2900.0  3400.0
+1300.0  1700.0  2400.0  2500.0  3100.0  3400.0
+1400.0  1700.0  2300.0  2600.0  3100.0  3300.0
+1200.0  1600.0  2400.0  2500.0  3200.0  3300.0
+1200.0  1600.0  2500.0  2600.0  3200.0  3300.0
+1300.0  1800.0  2500.0  2600.0  3200.0  3300.0
+1400.0  1800.0  2500.0  2600.0  3200.0  3300.0
+1700.0  2000.0  2400.0  2600.0  3100.0  3200.0
+1800.0  1900.0  2400.0  2600.0  3000.0  3300.0
+2000.0  2300.0  2700.0  2900.0  3300.0  3400.0
+1900.0  2300.0  2900.0  3100.0  3400.0  3500.0
+1900.0  2100.0  2700.0  3000.0  3300.0  3400.0
+1800.0  1900.0  2300.0  2700.0  3100.0  3300.0
+1800.0  1900.0  2200.0  2500.0  3100.0  3300.0
+1700.0  1800.0  2100.0  2400.0  3000.0  3300.0
+1700.0  1800.0  2200.0  2400.0  3100.0  3300.0
+1400.0  1900.0  2100.0  2300.0  3200.0  3300.0
+1300.0  1800.0  2000.0  2300.0  3200.0  3300.0
+1300.0  1800.0  1900.0  2500.0  3200.0  3300.0
+1300.0  1900.0  2100.0  2600.0  3200.0  3300.0
+2000.0  2100.0  2400.0  2500.0  3100.0  3400.0
+2100.0  2200.0  2400.0  2500.0  3100.0  3400.0
+2100.0  2400.0  2800.0  2900.0  3100.0  3300.0
+2000.0  2200.0  2600.0  2900.0  3200.0  3300.0
+2100.0  2200.0  2700.0  2800.0  3200.0  3300.0
+2000.0  2100.0  2700.0  2800.0  3200.0  3300.0
+2000.0  2100.0  2600.0  2800.0  3200.0  3400.0
+1900.0  2000.0  2600.0  2700.0  3300.0  3400.0
+1800.0  1900.0  2500.0  2700.0  3300.0  3400.0
+2000.0  2100.0  2600.0  2700.0  3200.0  3300.0
+2000.0  2100.0  2600.0  2700.0  3100.0  3400.0
+1900.0  2100.0  2600.0  2700.0  3200.0  3400.0
+1800.0  2000.0  2600.0  2700.0  3300.0  3400.0
+1800.0  2000.0  2600.0  2700.0  3300.0  3500.0
+1700.0  1900.0  2500.0  2700.0  3200.0  3400.0
+1800.0  2100.0  2700.0  2900.0  3200.0  3400.0
+1900.0  2200.0  2600.0  2900.0  3200.0  3300.0
+1900.0  2200.0  2700.0  2900.0  3200.0  3400.0
+1800.0  2200.0  2700.0  3000.0  3200.0  3400.0
+1800.0  2100.0  2700.0  2900.0  3300.0  3400.0
+1900.0  2200.0  2600.0  2900.0  3300.0  3500.0
+1700.0  2100.0  2500.0  2800.0  3400.0  3500.0
+1600.0  1900.0  2400.0  2600.0  3200.0  3400.0
+1600.0  1900.0  2400.0  2500.0  3300.0  3400.0
+1700.0  2000.0  2400.0  2500.0  3200.0  3400.0
+1700.0  2000.0  2300.0  2500.0  3200.0  3300.0
+1700.0  2000.0  2300.0  2400.0  2900.0  3200.0
+1900.0  2000.0  2600.0  2700.0  3100.0  3200.0
+1900.0  2000.0  2600.0  2700.0  3100.0  3400.0
+1800.0  2000.0  2600.0  2700.0  3100.0  3300.0
+1400.0  1800.0  2300.0  2600.0  3000.0  3200.0
+1300.0  1800.0  2200.0  2500.0  3100.0  3300.0
+1300.0  1900.0  2200.0  2600.0  3100.0  3300.0
+1400.0  1800.0  2100.0  2500.0  3000.0  3200.0
+1300.0  1600.0  1700.0  2500.0  3100.0  3200.0
+1300.0  1600.0  1700.0  2400.0  3100.0  3200.0
+1300.0  1600.0  1800.0  2300.0  3100.0  3200.0
+1500.0  1800.0  2400.0  2500.0  3100.0  3200.0
+1500.0  1900.0  2500.0  2600.0  3000.0  3200.0
+1800.0  2200.0  2600.0  2800.0  3200.0  3400.0
+1800.0  2000.0  2500.0  2700.0  3100.0  3300.0
+1700.0  1900.0  2400.0  2700.0  3100.0  3300.0
+1800.0  1900.0  2500.0  2700.0  3100.0  3300.0
+1800.0  1900.0  2600.0  2700.0  3000.0  3300.0
+2100.0  2200.0  2600.0  2700.0  3200.0  3300.0
+2100.0  2200.0  2600.0  2700.0  3300.0  3400.0
+1900.0  2100.0  2300.0  2500.0  3300.0  3400.0
+1700.0  2100.0  2500.0  2800.0  3100.0  3300.0
+1600.0  2100.0  2500.0  2700.0  3100.0  3300.0
+1500.0  1900.0  2400.0  2700.0  3100.0  3300.0
+1200.0  1700.0  1800.0  2100.0  3200.0  3400.0
+1400.0  1700.0  1800.0  2200.0  3300.0  3400.0
+1600.0  1800.0  1900.0  2400.0  3200.0  3300.0
+1700.0  1900.0  2000.0  2500.0  3100.0  3200.0
+1700.0  1900.0  2100.0  2400.0  2900.0  3100.0
+1800.0  2000.0  2200.0  2400.0  2800.0  3200.0
+1900.0  2100.0  2300.0  2600.0  2900.0  3300.0
+1900.0  2100.0  2300.0  2600.0  3200.0  3400.0
+2000.0  2100.0  2400.0  2500.0  3300.0  3400.0
+1800.0  1900.0  2400.0  2500.0  3200.0  3500.0
+1700.0  1900.0  2500.0  2700.0  3200.0  3300.0
+1800.0  2000.0  2600.0  3000.0  3300.0  3400.0
+1900.0  2000.0  2500.0  2700.0  2900.0  3200.0
+1900.0  2000.0  2500.0  2700.0  2900.0  3100.0
+1900.0  2000.0  2400.0  2600.0  2900.0  3200.0
+1700.0  2000.0  2300.0  2600.0  2900.0  3200.0
+1800.0  2000.0  2300.0  2600.0  2900.0  3200.0
+1900.0  2000.0  2400.0  2600.0  2900.0  3300.0
+1900.0  2000.0  2400.0  2600.0  3000.0  3300.0
+1900.0  2000.0  2500.0  2600.0  3100.0  3400.0
+1600.0  1800.0  2200.0  2600.0  3000.0  3300.0
+1600.0  1800.0  2200.0  2500.0  3000.0  3300.0
+1700.0  1900.0  2300.0  2600.0  3000.0  3200.0
+1800.0  1900.0  2300.0  2600.0  3000.0  3200.0
+1800.0  1900.0  2400.0  2500.0  3000.0  3400.0
+1700.0  1800.0  2400.0  2500.0  3200.0  3400.0
+1600.0  1700.0  2400.0  2600.0  3100.0  3300.0
+1600.0  1700.0  2400.0  2500.0  3200.0  3300.0
+1500.0  1600.0  2400.0  2500.0  3200.0  3400.0
+1400.0  1600.0  2400.0  2500.0  3200.0  3400.0
+1300.0  1600.0  2400.0  2500.0  3200.0  3300.0
+1400.0  2000.0  2500.0  2700.0  3100.0  3300.0
+1700.0  1900.0  2200.0  2500.0  3000.0  3300.0
+1700.0  1900.0  2300.0  2500.0  3100.0  3300.0
+2000.0  2100.0  2400.0  2600.0  3100.0  3300.0
+2000.0  2200.0  2500.0  2600.0  3100.0  3300.0
+1900.0  2000.0  2400.0  2500.0  3200.0  3400.0
+2100.0  2200.0  2300.0  2400.0  3200.0  3400.0
+2000.0  2100.0  2300.0  2500.0  3000.0  3400.0
+1600.0  1800.0  2100.0  2500.0  3000.0  3200.0
+1700.0  1800.0  2200.0  2700.0  3200.0  3300.0
+1800.0  1900.0  2400.0  2800.0  3200.0  3400.0
+1800.0  2000.0  2500.0  2800.0  3200.0  3400.0
+1700.0  2100.0  2600.0  2900.0  3300.0  3500.0
+1800.0  2200.0  2600.0  2900.0  3300.0  3500.0
+1700.0  2200.0  2600.0  2900.0  3300.0  3400.0
+1700.0  2100.0  2500.0  2800.0  3200.0  3400.0
+1700.0  1900.0  2600.0  2700.0  3300.0  3400.0
+1700.0  1800.0  2600.0  2700.0  3100.0  3400.0
+1700.0  1800.0  2600.0  2700.0  3200.0  3400.0
+1700.0  1900.0  2700.0  2800.0  3200.0  3400.0
+1600.0  1900.0  2700.0  2800.0  3200.0  3300.0
+1400.0  1900.0  2800.0  2900.0  3200.0  3300.0
+1600.0  2000.0  2600.0  2700.0  3200.0  3300.0
+1700.0  2000.0  2600.0  2700.0  3200.0  3300.0
+1700.0  2000.0  2600.0  2700.0  3200.0  3400.0
+1700.0  2000.0  2600.0  2700.0  3300.0  3400.0
+1700.0  1900.0  2500.0  2600.0  3300.0  3400.0
+1700.0  1800.0  2500.0  2700.0  3100.0  3300.0
+1700.0  1900.0  2500.0  2800.0  3300.0  3400.0
+1700.0  2000.0  2400.0  2800.0  3300.0  3400.0
+1600.0  1800.0  2100.0  2400.0  3100.0  3200.0
+1700.0  1800.0  2000.0  2700.0  3100.0  3200.0
+1700.0  1900.0  2100.0  2700.0  3100.0  3200.0
+1800.0  2000.0  2200.0  2700.0  3100.0  3200.0
+1900.0  2000.0  2300.0  2700.0  3100.0  3200.0
+1900.0  2100.0  2300.0  2700.0  3100.0  3200.0
+1900.0  2100.0  2400.0  2700.0  3100.0  3200.0
+2000.0  2100.0  2400.0  2700.0  3100.0  3200.0
+2000.0  2200.0  2400.0  2700.0  3100.0  3200.0
+1900.0  2100.0  2300.0  2600.0  3100.0  3200.0
+1800.0  2100.0  2200.0  2600.0  3100.0  3200.0
+1600.0  2000.0  2200.0  2600.0  3100.0  3200.0
+1500.0  2000.0  2200.0  2700.0  3100.0  3200.0
+1500.0  1900.0  2200.0  2700.0  3100.0  3200.0
+1500.0  1800.0  2200.0  2600.0  3100.0  3200.0
+1800.0  2100.0  2600.0  2700.0  3100.0  3300.0
+1700.0  2100.0  2600.0  2700.0  3100.0  3300.0
+1500.0  1800.0  2600.0  2700.0  3200.0  3400.0
+1200.0  1400.0  2500.0  2700.0  3200.0  3400.0
+1400.0  1700.0  2400.0  2600.0  3200.0  3400.0
+1400.0  1600.0  2400.0  2600.0  3100.0  3400.0
+1500.0  1700.0  2500.0  2600.0  3000.0  3300.0
+1600.0  1800.0  2500.0  2600.0  3100.0  3300.0
+1700.0  1900.0  2500.0  2600.0  3100.0  3300.0
+1800.0  1900.0  2400.0  2600.0  3000.0  3400.0
+2000.0  2100.0  2500.0  2600.0  3000.0  3300.0
+2100.0  2200.0  2500.0  2600.0  3100.0  3400.0
+2200.0  2300.0  2500.0  2600.0  3100.0  3400.0
+1400.0  1900.0  2300.0  2400.0  2800.0  3200.0
+1400.0  1900.0  2300.0  2400.0  2700.0  3100.0
+1500.0  1700.0  2300.0  2400.0  2800.0  3200.0
+1600.0  1700.0  2100.0  2500.0  3000.0  3300.0
+1700.0  2000.0  2400.0  2800.0  3000.0  3300.0
+1800.0  2000.0  2600.0  2800.0  3100.0  3300.0
+1800.0  2000.0  2500.0  2700.0  3200.0  3300.0
+1800.0  2000.0  2600.0  2700.0  3200.0  3400.0
+1800.0  2000.0  2600.0  2700.0  3200.0  3300.0
+1800.0  2200.0  2600.0  2800.0  3200.0  3300.0
+1800.0  2100.0  2600.0  2800.0  3100.0  3300.0
+1700.0  1900.0  2500.0  2700.0  3000.0  3300.0
+1800.0  1900.0  2500.0  2700.0  3000.0  3300.0
+1900.0  2000.0  2500.0  2700.0  3100.0  3300.0
+1900.0  2000.0  2500.0  2700.0  3100.0  3400.0
+1700.0  1900.0  2600.0  2800.0  3200.0  3400.0
+1600.0  1900.0  2600.0  2800.0  3300.0  3400.0
+1500.0  1800.0  2500.0  2700.0  3300.0  3400.0
+1500.0  1900.0  2400.0  2500.0  3200.0  3400.0
+1200.0  1800.0  2200.0  2300.0  3100.0  3200.0
+1400.0  1900.0  2300.0  2600.0  3000.0  3300.0
+1300.0  1400.0  2300.0  2400.0  2800.0  3100.0
+1300.0  1400.0  2300.0  2500.0  3000.0  3200.0
+1300.0  1600.0  2400.0  2600.0  3000.0  3200.0
+1400.0  1600.0  2400.0  2500.0  2900.0  3200.0
+1500.0  1600.0  2400.0  2600.0  3000.0  3200.0
+1500.0  1700.0  2400.0  2600.0  2900.0  3200.0
+1600.0  1800.0  2400.0  2600.0  2900.0  3100.0
+1800.0  2000.0  2500.0  2700.0  3000.0  3300.0
+1900.0  2100.0  2600.0  2700.0  3000.0  3300.0
+1900.0  2100.0  2500.0  2700.0  3000.0  3200.0
+2000.0  2100.0  2400.0  2700.0  3100.0  3300.0
+2000.0  2200.0  2400.0  2700.0  3100.0  3300.0
+1900.0  2300.0  2600.0  2700.0  3000.0  3200.0
+2000.0  2200.0  2500.0  2600.0  3000.0  3200.0
+1900.0  2000.0  2500.0  2600.0  3000.0  3300.0
+1800.0  2000.0  2400.0  2600.0  3000.0  3300.0
+1500.0  1900.0  2300.0  2500.0  2700.0  3000.0
+1500.0  2000.0  2400.0  2500.0  2700.0  3100.0
+1200.0  1900.0  2300.0  2500.0  2800.0  3000.0
+1300.0  1800.0  2200.0  2300.0  3100.0  3200.0
+1600.0  1900.0  2400.0  2500.0  3100.0  3200.0
+2100.0  2200.0  2600.0  2700.0  3100.0  3300.0
+2100.0  2200.0  2600.0  2700.0  3000.0  3300.0
+2000.0  2200.0  2600.0  2700.0  3100.0  3300.0
+2000.0  2100.0  2400.0  2600.0  3200.0  3300.0
+1800.0  2000.0  2300.0  2400.0  3100.0  3300.0
+1500.0  2000.0  2200.0  2500.0  3200.0  3300.0
+1600.0  1900.0  2400.0  2600.0  3100.0  3300.0
+1500.0  1800.0  2200.0  2600.0  3000.0  3200.0
+1500.0  1800.0  2100.0  2600.0  2900.0  3100.0
+1400.0  1700.0  1900.0  2300.0  2800.0  3000.0
+1500.0  1700.0  1900.0  2200.0  2800.0  2900.0
+1500.0  1700.0  2000.0  2200.0  2900.0  3000.0
+1500.0  1700.0  2100.0  2300.0  2900.0  3000.0
+1500.0  1800.0  2200.0  2300.0  3000.0  3100.0
+1500.0  1800.0  2200.0  2400.0  3000.0  3100.0
+1600.0  1800.0  2300.0  2400.0  3100.0  3200.0
+1600.0  1800.0  2300.0  2500.0  3100.0  3200.0
+1600.0  1800.0  2400.0  2500.0  3100.0  3200.0
+1600.0  1800.0  2400.0  2500.0  3100.0  3300.0
+1600.0  1800.0  2400.0  2500.0  3200.0  3300.0
+1500.0  1700.0  2400.0  2500.0  3200.0  3300.0
+1500.0  1700.0  2300.0  2500.0  2900.0  3300.0
+1800.0  2100.0  2500.0  2600.0  3200.0  3300.0
+1900.0  2100.0  2400.0  2500.0  3100.0  3400.0
+1900.0  2100.0  2200.0  2500.0  3100.0  3300.0
+1700.0  1800.0  2200.0  2500.0  2900.0  3300.0
+1700.0  1800.0  2400.0  2500.0  3000.0  3300.0
+1600.0  1700.0  2400.0  2500.0  3100.0  3300.0
+1500.0  1700.0  2400.0  2500.0  3100.0  3300.0
+1400.0  1700.0  2500.0  2600.0  3100.0  3200.0
+1300.0  1600.0  2500.0  2600.0  3100.0  3200.0
+1200.0  1600.0  2500.0  2600.0  3100.0  3200.0
+1100.0  1700.0  2600.0  2700.0  3100.0  3200.0
+1100.0  1500.0  2600.0  2700.0  3100.0  3200.0
+1100.0  1500.0  2600.0  2700.0  3100.0  3300.0
+1100.0  1500.0  2500.0  2700.0  3000.0  3300.0
+1000.0  1600.0  2600.0  2700.0  3100.0  3300.0
+1300.0  1600.0  2600.0  2700.0  3100.0  3300.0
+1300.0  1600.0  2600.0  2700.0  3200.0  3300.0
+1500.0  1700.0  2500.0  2600.0  3100.0  3300.0
+1700.0  1800.0  2500.0  2600.0  3100.0  3300.0
+1700.0  1900.0  2500.0  2600.0  3200.0  3300.0
+1800.0  1900.0  2500.0  2600.0  3200.0  3300.0
+1800.0  2000.0  2500.0  2700.0  3100.0  3400.0
+1800.0  2100.0  2500.0  2700.0  3100.0  3300.0
+1900.0  2200.0  2500.0  2700.0  3200.0  3300.0
+1900.0  2200.0  2400.0  2600.0  3100.0  3300.0
+1900.0  2300.0  2500.0  2600.0  3100.0  3300.0
+1900.0  2000.0  2200.0  2400.0  3200.0  3300.0
+1600.0  1900.0  2200.0  2300.0  3200.0  3300.0
+1400.0  1600.0  2200.0  2400.0  3100.0  3200.0
+1100.0  1500.0  2300.0  2500.0  3000.0  3100.0
+1400.0  1700.0  2500.0  2700.0  3200.0  3300.0
+1500.0  1800.0  2400.0  2500.0  3200.0  3300.0
+1800.0  2100.0  2500.0  2800.0  3100.0  3300.0
+1800.0  1900.0  2300.0  2500.0  3200.0  3400.0
+1700.0  1900.0  2300.0  2500.0  3200.0  3400.0
+1800.0  2100.0  2500.0  2800.0  3200.0  3400.0
+1800.0  2000.0  2500.0  2800.0  3200.0  3300.0
+1900.0  2100.0  2600.0  2800.0  3100.0  3400.0
+1700.0  2100.0  2600.0  2700.0  3200.0  3400.0
+1800.0  2100.0  2600.0  2700.0  3300.0  3500.0
+1900.0  2000.0  2500.0  2600.0  3300.0  3400.0
+1600.0  1900.0  2200.0  2400.0  3200.0  3300.0
+1400.0  2000.0  2300.0  2600.0  3100.0  3200.0
+1300.0  1800.0  2300.0  2400.0  3000.0  3100.0
+1300.0  1700.0  2300.0  2500.0  3000.0  3100.0
+1600.0  1700.0  2600.0  2700.0  3200.0  3300.0
+1700.0  2000.0  2300.0  2400.0  3100.0  3300.0
+2200.0  2300.0  2600.0  2800.0  3200.0  3400.0
+2100.0  2300.0  2500.0  2900.0  3200.0  3300.0
+2200.0  2300.0  2500.0  2900.0  3200.0  3300.0
+2000.0  2300.0  2500.0  2700.0  3200.0  3300.0
+2200.0  2400.0  2500.0  2700.0  3200.0  3300.0
+2200.0  2400.0  2600.0  2800.0  3200.0  3300.0
+1700.0  2000.0  2400.0  2700.0  3000.0  3200.0
+1700.0  1900.0  2500.0  2700.0  3000.0  3200.0
+1700.0  1900.0  2600.0  2700.0  3100.0  3300.0
+1500.0  1800.0  2600.0  2700.0  3100.0  3300.0
+1600.0  1700.0  2600.0  2700.0  2900.0  3300.0
+1600.0  1700.0  2600.0  2800.0  3000.0  3300.0
+1700.0  2000.0  2700.0  2800.0  3100.0  3400.0
+1600.0  1900.0  2500.0  2700.0  3000.0  3300.0
+1800.0  2200.0  2800.0  2900.0  3300.0  3400.0
+2000.0  2500.0  2800.0  2900.0  3400.0  3500.0
+2000.0  2400.0  2800.0  2900.0  3400.0  3500.0
+2000.0  2300.0  2700.0  2800.0  3200.0  3400.0
+1600.0  1700.0  2400.0  2600.0  3200.0  3300.0
+1500.0  1900.0  2400.0  2500.0  3200.0  3300.0
+1400.0  1900.0  2400.0  2500.0  3200.0  3300.0
+1400.0  1900.0  2500.0  2600.0  3200.0  3300.0
+1300.0  1900.0  2500.0  2600.0  3200.0  3300.0
+1300.0  1700.0  2500.0  2600.0  3100.0  3300.0
+1300.0  1500.0  2500.0  2600.0  3100.0  3300.0
+1200.0  1400.0  2400.0  2500.0  3100.0  3300.0
+1200.0  1500.0  2400.0  2500.0  3100.0  3300.0
+1200.0  1600.0  2400.0  2500.0  3100.0  3300.0
+1200.0  1700.0  2500.0  2600.0  3100.0  3300.0
+1200.0  1700.0  2500.0  2600.0  3200.0  3300.0
+1200.0  1800.0  2500.0  2600.0  3200.0  3300.0
+1200.0  1800.0  2400.0  2500.0  3200.0  3300.0
+1200.0  1800.0  2400.0  2500.0  3100.0  3300.0
+1200.0  1700.0  2400.0  2500.0  3100.0  3200.0
+1200.0  1600.0  2400.0  2500.0  3000.0  3200.0
+1200.0  1600.0  2400.0  2500.0  2900.0  3100.0
+1200.0  1700.0  2400.0  2500.0  3000.0  3300.0
+1300.0  1700.0  2400.0  2500.0  3100.0  3300.0
+1200.0  1700.0  2400.0  2500.0  3000.0  3100.0
+1200.0  1700.0  2300.0  2400.0  3000.0  3100.0
+1600.0  2000.0  2300.0  2600.0  3000.0  3300.0
+1400.0  1600.0  1900.0  2200.0  3000.0  3100.0
+1400.0  1600.0  1800.0  2100.0  3000.0  3100.0
+1300.0  1500.0  1600.0  2000.0  3100.0  3200.0
+1300.0  1500.0  1700.0  1900.0  3100.0  3200.0
+1400.0  1600.0  1700.0  1900.0  3100.0  3200.0
+1600.0  1700.0  2000.0  2100.0  3100.0  3200.0
+1600.0  1800.0  2100.0  2200.0  3100.0  3200.0
+1800.0  1900.0  2300.0  2400.0  3200.0  3300.0
+1900.0  2100.0  2600.0  2700.0  3100.0  3400.0
+1900.0  2000.0  2500.0  2600.0  3000.0  3400.0
+1800.0  2100.0  2600.0  2700.0  3200.0  3400.0
+1800.0  2300.0  2600.0  2800.0  3300.0  3500.0
+1600.0  2100.0  2400.0  2600.0  3200.0  3300.0
+1300.0  1900.0  2500.0  2600.0  3100.0  3300.0
+1300.0  1800.0  2500.0  2600.0  3100.0  3300.0
+1400.0  1800.0  2600.0  2700.0  3100.0  3300.0
+1600.0  1800.0  2500.0  2700.0  3100.0  3300.0
+1600.0  1800.0  2500.0  2600.0  3200.0  3300.0
+1700.0  1800.0  2500.0  2600.0  3200.0  3300.0
+1900.0  2000.0  2500.0  2700.0  2900.0  3300.0
+2000.0  2100.0  2400.0  2600.0  2900.0  3200.0
+2000.0  2100.0  2400.0  2600.0  3000.0  3300.0
+2100.0  2200.0  2400.0  2600.0  3000.0  3300.0
+2000.0  2100.0  2500.0  2600.0  3100.0  3400.0
+1900.0  2000.0  2400.0  2600.0  3000.0  3400.0
+1800.0  1900.0  2300.0  2500.0  2900.0  3400.0
+1700.0  1800.0  2500.0  2700.0  3100.0  3400.0
+1700.0  1900.0  2500.0  2700.0  3100.0  3400.0
+1800.0  1900.0  2700.0  2800.0  3200.0  3400.0
+2100.0  2200.0  2600.0  2800.0  3100.0  3400.0
+2200.0  2300.0  2600.0  2800.0  3100.0  3400.0
+1800.0  2300.0  2500.0  2700.0  3100.0  3300.0
+1500.0  2000.0  2400.0  2500.0  2800.0  3100.0
+1600.0  2000.0  2400.0  2500.0  2800.0  3100.0
+1600.0  2000.0  2400.0  2500.0  2800.0  3200.0
+1600.0  2000.0  2400.0  2500.0  2900.0  3300.0
+1800.0  2200.0  2500.0  2600.0  3000.0  3300.0
+2100.0  2300.0  2500.0  2600.0  3100.0  3300.0
+2100.0  2200.0  2600.0  2700.0  3100.0  3200.0
+1800.0  1900.0  2600.0  2700.0  3100.0  3200.0
+1800.0  1900.0  2600.0  2700.0  3100.0  3300.0
+1700.0  1800.0  2600.0  2700.0  3100.0  3300.0
+1700.0  1800.0  2600.0  2700.0  3200.0  3300.0
+1600.0  1700.0  2600.0  2700.0  3200.0  3400.0
+1600.0  1700.0  2500.0  2700.0  3200.0  3300.0
+1500.0  1800.0  2400.0  2500.0  3000.0  3300.0
+1500.0  1900.0  2300.0  2500.0  3000.0  3200.0
+1700.0  2100.0  2300.0  2600.0  3100.0  3300.0
+1800.0  2000.0  2700.0  2800.0  3100.0  3300.0
+1700.0  1800.0  2500.0  2700.0  2900.0  3300.0
+1600.0  1800.0  2500.0  2700.0  3000.0  3300.0
+1700.0  1800.0  2400.0  2600.0  3100.0  3300.0
+1700.0  1800.0  2400.0  2500.0  3200.0  3300.0
+1800.0  1900.0  2400.0  2500.0  3200.0  3300.0
+1900.0  2000.0  2400.0  2500.0  3200.0  3300.0
+2000.0  2100.0  2300.0  2500.0  3200.0  3400.0
+2000.0  2100.0  2200.0  2400.0  3200.0  3400.0
+2000.0  2100.0  2300.0  2400.0  3100.0  3400.0
+1700.0  1900.0  2400.0  2500.0  3200.0  3400.0
+1700.0  1900.0  2400.0  2500.0  3100.0  3400.0
+1700.0  1800.0  2400.0  2600.0  3300.0  3400.0
+1700.0  1800.0  2500.0  2600.0  3300.0  3400.0
+1600.0  1900.0  2500.0  2600.0  3300.0  3400.0
+1700.0  1900.0  2600.0  2800.0  3100.0  3300.0
+1700.0  2100.0  2600.0  2700.0  3300.0  3400.0
+1800.0  2000.0  2400.0  2500.0  3100.0  3300.0
+2000.0  2100.0  2300.0  2400.0  3200.0  3400.0
+1400.0  1900.0  2300.0  2400.0  3000.0  3300.0
+1400.0  2000.0  2300.0  2500.0  3000.0  3100.0
+1400.0  1700.0  2500.0  2600.0  3100.0  3300.0
+1300.0  1600.0  2400.0  2600.0  3100.0  3300.0
+1300.0  1600.0  2400.0  2500.0  3200.0  3400.0
+1500.0  2000.0  2500.0  2700.0  3200.0  3400.0
+1800.0  2100.0  2500.0  2900.0  3200.0  3400.0
+1800.0  2200.0  2500.0  2800.0  3300.0  3400.0
+1700.0  2000.0  2500.0  2900.0  3300.0  3400.0
+1700.0  2100.0  2600.0  2900.0  3400.0  3500.0
+1500.0  1900.0  2400.0  2800.0  3300.0  3400.0
+1800.0  2100.0  2500.0  2800.0  3300.0  3400.0
+1700.0  2000.0  2600.0  2800.0  3300.0  3400.0
+1700.0  2100.0  2600.0  2800.0  3200.0  3400.0
+1900.0  2200.0  2600.0  2800.0  3200.0  3300.0
+1900.0  2100.0  2600.0  2800.0  3200.0  3300.0
+1800.0  2100.0  2700.0  2800.0  3300.0  3400.0
+1700.0  2100.0  2700.0  2800.0  3200.0  3400.0
+1800.0  2200.0  2600.0  2700.0  3200.0  3400.0
+1800.0  2200.0  2600.0  2700.0  3300.0  3400.0
+1800.0  2300.0  2600.0  2700.0  3300.0  3400.0
+1900.0  2300.0  2500.0  2700.0  3300.0  3400.0
+1800.0  2200.0  2500.0  2800.0  3200.0  3400.0
+1800.0  2200.0  2500.0  2700.0  3100.0  3300.0
+1700.0  2200.0  2400.0  2600.0  3100.0  3200.0
+1800.0  2000.0  2300.0  2500.0  3200.0  3300.0
+1800.0  2000.0  2200.0  2500.0  3300.0  3400.0
+1800.0  2000.0  2200.0  2600.0  3300.0  3400.0
+1500.0  1800.0  1900.0  2400.0  3200.0  3300.0
+1500.0  1700.0  1900.0  2500.0  3200.0  3300.0
+1500.0  1800.0  1900.0  2500.0  3200.0  3300.0
+1600.0  1800.0  2000.0  2400.0  3300.0  3400.0
+1500.0  1700.0  2200.0  2600.0  3000.0  3200.0
+1400.0  1700.0  2000.0  2600.0  3000.0  3200.0
+1500.0  1900.0  2400.0  2600.0  3100.0  3200.0
+1400.0  1900.0  2500.0  2600.0  3100.0  3300.0
+1200.0  1600.0  2500.0  2700.0  3100.0  3300.0
+1200.0  1800.0  2500.0  2600.0  3100.0  3200.0
+1400.0  1800.0  2300.0  2400.0  3100.0  3200.0
+1400.0  1700.0  2200.0  2300.0  3200.0  3300.0
+1800.0  1900.0  2200.0  2300.0  3300.0  3400.0
+1800.0  2100.0  2300.0  2400.0  2900.0  3200.0
+1900.0  2100.0  2300.0  2500.0  3000.0  3300.0
+1900.0  2100.0  2400.0  2600.0  3300.0  3400.0
+1600.0  1900.0  2400.0  2500.0  3200.0  3300.0
+1500.0  1700.0  2300.0  2400.0  3200.0  3300.0
+1500.0  1900.0  2300.0  2500.0  3200.0  3300.0
+1600.0  2000.0  2500.0  2700.0  3200.0  3300.0
+1900.0  2200.0  2500.0  2700.0  3300.0  3400.0
+1800.0  2300.0  2500.0  2700.0  3300.0  3400.0
+1800.0  2400.0  2500.0  2900.0  3300.0  3400.0
+1900.0  2400.0  2600.0  3000.0  3300.0  3400.0
+2000.0  2400.0  2700.0  3000.0  3400.0  3500.0
+1800.0  2100.0  2500.0  2900.0  3200.0  3300.0
+1700.0  2100.0  2500.0  2900.0  3200.0  3400.0
+1800.0  2100.0  2600.0  2800.0  3100.0  3400.0
+1800.0  2200.0  2700.0  2800.0  3200.0  3400.0
+1800.0  2300.0  2700.0  2900.0  3300.0  3500.0
+1400.0  2000.0  2600.0  2700.0  3200.0  3400.0
+1300.0  1800.0  2200.0  2300.0  3000.0  3100.0
+1300.0  1700.0  2100.0  2200.0  3100.0  3200.0
+1400.0  1700.0  2000.0  2200.0  3000.0  3100.0
+1400.0  1600.0  2000.0  2100.0  3000.0  3100.0
+1500.0  1800.0  2000.0  2300.0  3100.0  3200.0
+1600.0  1800.0  2000.0  2300.0  3100.0  3200.0
+1600.0  1800.0  2000.0  2200.0  3100.0  3200.0
+1700.0  2000.0  2200.0  2300.0  3000.0  3200.0
+1700.0  2100.0  2400.0  2800.0  3100.0  3300.0
+1800.0  2000.0  2600.0  2800.0  3000.0  3200.0
+1700.0  1900.0  2600.0  2700.0  3200.0  3400.0
+1600.0  1700.0  2400.0  2600.0  3200.0  3400.0
+1600.0  1700.0  2400.0  2500.0  3200.0  3400.0
+1700.0  2100.0  2500.0  2800.0  3200.0  3300.0
+1700.0  2200.0  2500.0  2800.0  3200.0  3300.0
+1700.0  2100.0  2400.0  2600.0  3200.0  3300.0
+1700.0  1900.0  2400.0  2600.0  3200.0  3300.0
+1600.0  1900.0  2200.0  2500.0  3100.0  3300.0
+1500.0  1900.0  2100.0  2400.0  3100.0  3300.0
+1500.0  1600.0  2000.0  2300.0  3000.0  3200.0
+1500.0  1700.0  2100.0  2500.0  3100.0  3300.0
+1600.0  1800.0  2300.0  2700.0  3100.0  3300.0
+1600.0  1700.0  2300.0  2600.0  3100.0  3200.0
+1500.0  1700.0  2300.0  2500.0  3000.0  3200.0
+1400.0  1700.0  2400.0  2500.0  3000.0  3200.0
+1200.0  1500.0  2500.0  2600.0  3000.0  3100.0
+1100.0  1900.0  2600.0  2700.0  3000.0  3100.0
+1500.0  2000.0  2700.0  2800.0  3200.0  3400.0
+1700.0  2100.0  2700.0  2800.0  3300.0  3400.0
+1800.0  2200.0  2700.0  2800.0  3300.0  3400.0
+1800.0  2400.0  2700.0  2800.0  3200.0  3300.0
+1800.0  2300.0  2500.0  2600.0  3100.0  3200.0
+1500.0  1800.0  2100.0  2400.0  3000.0  3200.0
+1400.0  1600.0  1800.0  2200.0  3000.0  3100.0
+1300.0  1600.0  1700.0  2100.0  3000.0  3100.0
+1200.0  1400.0  1600.0  2400.0  3000.0  3100.0
+1300.0  1500.0  1600.0  2100.0  3000.0  3100.0
+1400.0  1600.0  1700.0  2100.0  3000.0  3100.0
+1400.0  1700.0  2100.0  2300.0  3100.0  3200.0
+1400.0  1700.0  2200.0  2300.0  3100.0  3200.0
+1400.0  1600.0  2200.0  2300.0  3100.0  3200.0
+1400.0  1700.0  2200.0  2400.0  3100.0  3200.0
+1400.0  1700.0  2300.0  2400.0  3100.0  3200.0
+1400.0  1600.0  2300.0  2400.0  3100.0  3200.0
+1400.0  1600.0  2200.0  2300.0  3000.0  3200.0
+1500.0  2000.0  2400.0  2600.0  3200.0  3300.0
+1700.0  2000.0  2700.0  2800.0  3200.0  3400.0
+2100.0  2400.0  2800.0  2900.0  3200.0  3400.0
+2000.0  2500.0  2700.0  2800.0  3400.0  3500.0
+2100.0  2600.0  2800.0  2900.0  3400.0  3500.0
+2000.0  2500.0  2700.0  2800.0  3300.0  3400.0
+1900.0  2100.0  2700.0  2800.0  3200.0  3400.0
+2100.0  2200.0  2700.0  2800.0  3200.0  3400.0
+2100.0  2200.0  2700.0  2900.0  3300.0  3400.0
+2200.0  2300.0  2700.0  2800.0  3200.0  3400.0
+1700.0  2100.0  2400.0  2700.0  3200.0  3400.0
+1600.0  2100.0  2400.0  2600.0  2900.0  3200.0
+1500.0  2100.0  2400.0  2500.0  2800.0  3100.0
+1600.0  2100.0  2400.0  2500.0  2800.0  3200.0
+1600.0  2100.0  2400.0  2500.0  2900.0  3200.0
+1600.0  2100.0  2400.0  2500.0  3000.0  3200.0
+1600.0  2100.0  2300.0  2500.0  3200.0  3300.0
+1700.0  1800.0  2200.0  2600.0  3100.0  3300.0
+1700.0  1900.0  2300.0  2600.0  3100.0  3300.0
+1800.0  1900.0  2300.0  2500.0  3100.0  3300.0
+1800.0  1900.0  2400.0  2500.0  3100.0  3200.0
+1600.0  1800.0  2200.0  2500.0  3100.0  3300.0
+1500.0  1700.0  1900.0  2200.0  3100.0  3200.0
+1500.0  1700.0  1900.0  2100.0  3100.0  3200.0
+1500.0  1700.0  1900.0  2300.0  3200.0  3300.0
+1500.0  1700.0  1900.0  2400.0  3200.0  3300.0
+1500.0  1700.0  1800.0  2400.0  3200.0  3300.0
+1500.0  1700.0  1900.0  2200.0  3200.0  3300.0
+1500.0  1700.0  1900.0  2100.0  3200.0  3300.0
+1500.0  1600.0  1900.0  2000.0  3100.0  3200.0
+1500.0  1700.0  2000.0  2100.0  3200.0  3300.0
+1600.0  1700.0  2000.0  2100.0  3200.0  3300.0
+1600.0  1800.0  2100.0  2300.0  3200.0  3300.0
+1700.0  1900.0  2300.0  2500.0  3100.0  3200.0
+1700.0  2000.0  2400.0  2600.0  3000.0  3100.0
+1700.0  2100.0  2400.0  2600.0  3000.0  3100.0
+1600.0  2000.0  2400.0  2600.0  2900.0  3100.0
+1800.0  2200.0  2600.0  2800.0  3000.0  3200.0
+2000.0  2400.0  2500.0  2800.0  3100.0  3200.0
+2100.0  2500.0  2600.0  2800.0  3200.0  3300.0
+2200.0  2500.0  2700.0  3000.0  3200.0  3300.0
+2100.0  2500.0  2700.0  3000.0  3200.0  3300.0
+2200.0  2500.0  2600.0  3000.0  3200.0  3300.0
+2200.0  2500.0  2600.0  2900.0  3200.0  3300.0
+2200.0  2400.0  2600.0  2800.0  3100.0  3300.0
+2000.0  2300.0  2500.0  2700.0  3100.0  3200.0
+2000.0  2200.0  2500.0  2700.0  3100.0  3200.0
+2000.0  2300.0  2500.0  2800.0  3100.0  3200.0
+2000.0  2300.0  2400.0  2800.0  3100.0  3200.0
+2100.0  2200.0  2500.0  2800.0  3100.0  3200.0
+2000.0  2100.0  2500.0  2800.0  3200.0  3300.0
+1900.0  2000.0  2200.0  2500.0  3200.0  3300.0
+1600.0  1800.0  2100.0  2400.0  3100.0  3300.0
+1500.0  1600.0  1800.0  2100.0  3200.0  3300.0
+1500.0  1700.0  1800.0  2100.0  3200.0  3300.0
+1500.0  1700.0  1800.0  2300.0  3200.0  3300.0
+2000.0  2200.0  2400.0  2600.0  3000.0  3200.0
+2000.0  2400.0  2600.0  2800.0  3100.0  3300.0
+2000.0  2400.0  2500.0  2700.0  3100.0  3300.0
+1800.0  2200.0  2500.0  2600.0  3100.0  3300.0
+1600.0  1800.0  2400.0  2500.0  3000.0  3200.0
+1500.0  1800.0  2400.0  2500.0  3000.0  3100.0
+1800.0  2000.0  2200.0  2700.0  3000.0  3300.0
+1600.0  1900.0  2100.0  2600.0  3000.0  3200.0
+1500.0  1700.0  1900.0  2300.0  3000.0  3100.0
+1500.0  1700.0  1900.0  2200.0  3000.0  3100.0
+1600.0  1700.0  2200.0  2400.0  2900.0  3000.0
+1600.0  1800.0  2200.0  2400.0  2900.0  3000.0
+1800.0  2300.0  2600.0  2700.0  3200.0  3400.0
+1800.0  1900.0  2500.0  2600.0  3300.0  3400.0
+1800.0  1900.0  2400.0  2600.0  3300.0  3400.0
+1700.0  1900.0  2300.0  2500.0  3300.0  3400.0
+1600.0  1800.0  2300.0  2400.0  3200.0  3300.0
+1300.0  1900.0  2300.0  2400.0  3100.0  3200.0
+1600.0  1700.0  2400.0  2600.0  3100.0  3200.0
+2000.0  2100.0  2500.0  2600.0  3200.0  3300.0
+2100.0  2200.0  2400.0  2600.0  3200.0  3400.0
+1700.0  2000.0  2400.0  2600.0  3100.0  3400.0
+1700.0  1800.0  2400.0  2500.0  3100.0  3300.0
+1600.0  1900.0  2300.0  2400.0  3100.0  3200.0
+1600.0  1900.0  2200.0  2500.0  3000.0  3100.0
+1500.0  1800.0  2000.0  2300.0  3000.0  3100.0
+1500.0  1700.0  1900.0  2100.0  2900.0  3000.0
+1400.0  1600.0  2400.0  2700.0  2900.0  3100.0
+1400.0  1600.0  2300.0  2600.0  3000.0  3100.0
+1500.0  1600.0  2300.0  2500.0  2900.0  3100.0
+1600.0  1700.0  2400.0  2600.0  3000.0  3200.0
+1600.0  1800.0  2400.0  2600.0  3100.0  3200.0
+1600.0  1900.0  2400.0  2600.0  3100.0  3200.0
+1700.0  2100.0  2400.0  2600.0  3100.0  3200.0
+1600.0  2000.0  2300.0  2600.0  3100.0  3200.0
+1400.0  1600.0  2200.0  2300.0  3100.0  3300.0
+1400.0  1600.0  2200.0  2300.0  3200.0  3300.0
+1300.0  1800.0  2300.0  2500.0  3300.0  3400.0
+1200.0  1900.0  2400.0  2500.0  3300.0  3400.0
+1200.0  1700.0  2400.0  2500.0  3300.0  3400.0
+1500.0  1700.0  2300.0  2500.0  3100.0  3200.0
+1900.0  2000.0  2300.0  2400.0  3200.0  3300.0
+2200.0  2300.0  2500.0  2700.0  3200.0  3300.0
+2100.0  2300.0  2500.0  2800.0  3300.0  3400.0
+1300.0  1900.0  2300.0  2400.0  3100.0  3300.0
+1800.0  2000.0  2400.0  2700.0  3200.0  3300.0
+1500.0  2000.0  2300.0  2400.0  3000.0  3300.0
+1600.0  2000.0  2400.0  2700.0  3000.0  3200.0
+1800.0  2100.0  2400.0  2600.0  3000.0  3200.0
+1800.0  2100.0  2400.0  2600.0  3000.0  3300.0
+1800.0  2100.0  2400.0  2500.0  3100.0  3300.0
+1700.0  2100.0  2300.0  2600.0  3100.0  3200.0
+1600.0  2000.0  2200.0  2500.0  3200.0  3300.0
+1500.0  1800.0  2200.0  2300.0  3200.0  3400.0
+1400.0  1600.0  2200.0  2300.0  3200.0  3400.0
+1300.0  1500.0  2200.0  2300.0  3200.0  3300.0
+1200.0  1600.0  2300.0  2400.0  3300.0  3400.0
+1200.0  1500.0  2300.0  2400.0  3200.0  3400.0
+1200.0  1400.0  2300.0  2400.0  3100.0  3400.0
+1300.0  1500.0  2400.0  2500.0  3200.0  3400.0
+1700.0  2300.0  2600.0  2700.0  3300.0  3400.0
+1800.0  2400.0  2700.0  3000.0  3300.0  3400.0
+1800.0  2300.0  2700.0  2800.0  3200.0  3300.0
+1800.0  2200.0  2500.0  2600.0  3300.0  3400.0
+1700.0  1900.0  2400.0  2600.0  3200.0  3400.0
+1700.0  1800.0  2200.0  2500.0  3200.0  3400.0
+1500.0  1700.0  2300.0  2500.0  3100.0  3300.0
+1400.0  1700.0  2200.0  2400.0  3000.0  3200.0
+1300.0  1600.0  2200.0  2300.0  3000.0  3100.0
+1300.0  1900.0  2200.0  2400.0  2900.0  3100.0
+1400.0  1900.0  2300.0  2400.0  3000.0  3100.0
+1400.0  1900.0  2300.0  2500.0  2900.0  3100.0
+1400.0  1800.0  2400.0  2600.0  2800.0  3100.0
+1600.0  2000.0  2500.0  2700.0  3100.0  3300.0
+1500.0  2000.0  2500.0  2700.0  3200.0  3300.0
+1500.0  2100.0  2600.0  2900.0  3300.0  3400.0
+1800.0  2300.0  2600.0  2800.0  3300.0  3400.0
+1700.0  2200.0  2600.0  2700.0  3300.0  3400.0
+2000.0  2200.0  2500.0  2700.0  3000.0  3100.0
+2000.0  2300.0  2600.0  2800.0  3100.0  3200.0
+2100.0  2400.0  2500.0  2900.0  3200.0  3300.0
+2100.0  2300.0  2500.0  2800.0  3100.0  3200.0
+1900.0  2200.0  2300.0  2700.0  3100.0  3200.0
+1200.0  1900.0  2000.0  2300.0  3100.0  3200.0
+1300.0  1600.0  1700.0  2100.0  3200.0  3300.0
+1400.0  1600.0  1700.0  2100.0  3200.0  3300.0
+1400.0  1600.0  1700.0  2200.0  3200.0  3300.0
+1600.0  1700.0  2200.0  2600.0  2900.0  3100.0
+1900.0  2300.0  2700.0  2900.0  3200.0  3300.0
+1700.0  2100.0  2700.0  2900.0  3200.0  3400.0
+1800.0  2100.0  2700.0  2800.0  3100.0  3400.0
+1800.0  2100.0  2600.0  2800.0  3000.0  3200.0
+1800.0  2100.0  2700.0  2800.0  3200.0  3400.0
+1400.0  1600.0  2600.0  2700.0  3000.0  3300.0
+1400.0  1500.0  2600.0  2700.0  3000.0  3400.0
+1300.0  1400.0  2400.0  2800.0  3000.0  3300.0
+1800.0  2200.0  2600.0  2900.0  3200.0  3400.0
+1600.0  2100.0  2600.0  2900.0  3200.0  3400.0
+1200.0  1700.0  2500.0  2600.0  3000.0  3100.0
+1200.0  1800.0  2300.0  2600.0  3000.0  3100.0
+1200.0  1800.0  2300.0  2500.0  3000.0  3100.0
+1300.0  1700.0  2400.0  2500.0  3000.0  3100.0
+1500.0  1800.0  2400.0  2500.0  2900.0  3000.0
+1600.0  2300.0  2500.0  2700.0  3000.0  3100.0
+1900.0  2200.0  2700.0  2900.0  3100.0  3200.0
+1900.0  2200.0  2800.0  2900.0  3100.0  3200.0
+1900.0  2300.0  2800.0  2900.0  3200.0  3300.0
+2200.0  2500.0  2800.0  3000.0  3300.0  3400.0
+2100.0  2500.0  2800.0  3000.0  3300.0  3400.0
+2000.0  2400.0  2700.0  2800.0  3300.0  3500.0
+1900.0  2200.0  2600.0  2800.0  3300.0  3400.0
+1900.0  2100.0  2700.0  2800.0  3300.0  3400.0
+1700.0  1900.0  2600.0  2700.0  3000.0  3300.0
+1600.0  1700.0  2500.0  2600.0  3100.0  3300.0
+1800.0  1900.0  2600.0  2800.0  3100.0  3300.0
+1800.0  1900.0  2500.0  2800.0  3000.0  3300.0
+1900.0  2000.0  2600.0  2800.0  3100.0  3400.0
+2000.0  2100.0  2500.0  2700.0  3000.0  3300.0
+2100.0  2200.0  2500.0  2700.0  3000.0  3300.0
+2100.0  2200.0  2500.0  2800.0  3000.0  3300.0
+2000.0  2100.0  2400.0  2700.0  2900.0  3200.0
+1900.0  2000.0  2400.0  2600.0  2800.0  3100.0
+1700.0  2000.0  2500.0  2700.0  3100.0  3300.0
+1700.0  2100.0  2700.0  2800.0  3100.0  3300.0
+1500.0  1700.0  2400.0  2600.0  3100.0  3400.0
+1500.0  1600.0  2400.0  2500.0  3000.0  3300.0
+1400.0  1600.0  2300.0  2600.0  3100.0  3300.0
+1400.0  1500.0  2300.0  2600.0  3100.0  3300.0
+1500.0  1600.0  2400.0  2600.0  2900.0  3200.0
+1600.0  1700.0  2300.0  2600.0  3000.0  3200.0
+1600.0  1700.0  2300.0  2700.0  3000.0  3200.0
+1700.0  1800.0  2400.0  2600.0  3000.0  3200.0
+1600.0  1700.0  2300.0  2500.0  3100.0  3200.0
+1500.0  1600.0  2200.0  2400.0  3100.0  3200.0
+1300.0  1800.0  2200.0  2400.0  3100.0  3200.0
+1300.0  1800.0  2300.0  2400.0  3000.0  3200.0
+1200.0  1700.0  2300.0  2400.0  2900.0  3100.0
+1200.0  1800.0  2400.0  2500.0  2900.0  3200.0
+1200.0  1800.0  2300.0  2500.0  3100.0  3200.0
+1300.0  1800.0  2400.0  2600.0  3200.0  3300.0
+1300.0  1700.0  2400.0  2500.0  3200.0  3300.0
+1200.0  1700.0  2400.0  2500.0  3200.0  3300.0
+1200.0  1500.0  2400.0  2500.0  3200.0  3300.0
+1900.0  2100.0  2500.0  2800.0  3100.0  3300.0
+1800.0  2000.0  2400.0  2700.0  3000.0  3300.0
+1800.0  2000.0  2300.0  2600.0  3000.0  3300.0
+1900.0  2000.0  2300.0  2400.0  3200.0  3500.0
+1900.0  2000.0  2300.0  2400.0  3100.0  3400.0
+1800.0  2000.0  2300.0  2500.0  3200.0  3400.0
+1700.0  2000.0  2500.0  2600.0  3300.0  3400.0
+1800.0  2100.0  2500.0  2800.0  3100.0  3400.0
+1800.0  2000.0  2500.0  2800.0  3100.0  3300.0
+1800.0  2100.0  2500.0  2600.0  3100.0  3300.0
+1700.0  2100.0  2500.0  2700.0  3100.0  3400.0
+1600.0  1700.0  2500.0  2600.0  3200.0  3300.0
+1500.0  2200.0  2400.0  2700.0  3200.0  3300.0
+1400.0  2000.0  2300.0  2700.0  3300.0  3400.0
+1400.0  2000.0  2300.0  2500.0  3300.0  3400.0
+1600.0  2000.0  2400.0  2600.0  3100.0  3300.0
+1600.0  2000.0  2300.0  2600.0  3300.0  3400.0
+1600.0  2100.0  2300.0  2600.0  3300.0  3400.0
+1700.0  1900.0  2300.0  2600.0  3300.0  3400.0
+1900.0  2000.0  2300.0  2400.0  3300.0  3400.0
+1900.0  2000.0  2200.0  2400.0  3300.0  3400.0
+1700.0  1800.0  2200.0  2500.0  3000.0  3200.0
+1700.0  1800.0  2100.0  2500.0  3000.0  3200.0
+1500.0  1700.0  2100.0  2500.0  3000.0  3200.0
+1500.0  1600.0  2100.0  2500.0  3000.0  3200.0
+1500.0  1700.0  2200.0  2700.0  3100.0  3200.0
+1600.0  1900.0  2300.0  2700.0  3200.0  3300.0
+1500.0  1700.0  1800.0  2600.0  3200.0  3300.0
+1600.0  1900.0  2100.0  2500.0  3100.0  3300.0
+2000.0  2300.0  2700.0  2800.0  3100.0  3300.0
+2200.0  2500.0  2900.0  3000.0  3200.0  3300.0
+2300.0  2500.0  2900.0  3000.0  3200.0  3300.0
+1400.0  1900.0  2300.0  2500.0  3200.0  3300.0
+1600.0  2000.0  2300.0  2700.0  3200.0  3300.0
+1500.0  1900.0  2000.0  2400.0  3200.0  3300.0
+1300.0  1800.0  2000.0  2400.0  3300.0  3400.0
+1400.0  1900.0  2200.0  2500.0  3200.0  3300.0
+1800.0  2200.0  2600.0  3000.0  3300.0  3400.0
+1900.0  2200.0  2800.0  2900.0  3300.0  3400.0
+2000.0  2500.0  2900.0  3100.0  3200.0  3300.0
+2000.0  2400.0  2900.0  3000.0  3300.0  3400.0
+2100.0  2400.0  2800.0  3000.0  3200.0  3300.0
+2000.0  2400.0  2700.0  2900.0  3200.0  3300.0
+1700.0  2100.0  2600.0  2800.0  3200.0  3300.0
+1500.0  1900.0  2300.0  2700.0  3100.0  3300.0
+1500.0  1800.0  2200.0  2600.0  3200.0  3300.0
+1500.0  1700.0  2200.0  2500.0  3200.0  3400.0
+1100.0  2200.0  2500.0  2800.0  3200.0  3300.0
+1000.0  2100.0  2500.0  2700.0  3200.0  3300.0
+1000.0  2000.0  2500.0  2700.0  3200.0  3300.0
+1000.0  2000.0  2400.0  2600.0  3200.0  3300.0
+1100.0  1900.0  2400.0  2600.0  3100.0  3200.0
+1600.0  1900.0  2400.0  2700.0  3100.0  3400.0
+1700.0  2100.0  2500.0  2700.0  3000.0  3200.0
+2000.0  2200.0  2600.0  2800.0  3100.0  3300.0
+2100.0  2200.0  2600.0  2800.0  3100.0  3300.0
+1900.0  2100.0  2400.0  2700.0  3100.0  3300.0
+1900.0  2000.0  2300.0  2600.0  3100.0  3200.0
+1800.0  1900.0  2200.0  2600.0  3100.0  3200.0
+1500.0  1700.0  2000.0  2600.0  3100.0  3200.0
+1400.0  1500.0  1800.0  2800.0  3200.0  3300.0
+1300.0  1500.0  1700.0  2600.0  3200.0  3300.0
+1600.0  1900.0  2400.0  2700.0  3100.0  3200.0
+1600.0  1900.0  2400.0  2700.0  3100.0  3300.0
+1700.0  1900.0  2300.0  2700.0  3000.0  3200.0
+1700.0  1900.0  2200.0  2600.0  3000.0  3200.0
+1200.0  1600.0  1800.0  2000.0  3100.0  3400.0
+1100.0  1600.0  2400.0  2500.0  3000.0  3300.0
+1400.0  1700.0  2300.0  2400.0  2900.0  3200.0
+1700.0  2000.0  2300.0  2700.0  3200.0  3300.0
+1600.0  1700.0  2300.0  2400.0  3000.0  3400.0
+1700.0  1800.0  2300.0  2400.0  2900.0  3400.0
+1700.0  1800.0  2300.0  2400.0  2800.0  3300.0
+1800.0  1900.0  2300.0  2400.0  2800.0  3200.0
+1800.0  1900.0  2300.0  2400.0  3000.0  3300.0
+1800.0  1900.0  2300.0  2400.0  2900.0  3300.0
+1700.0  1800.0  2200.0  2300.0  2600.0  3200.0
+1700.0  1800.0  2200.0  2300.0  2700.0  3200.0
+1700.0  1800.0  2300.0  2400.0  3000.0  3300.0
+1700.0  1800.0  2300.0  2400.0  3100.0  3400.0
+1700.0  1800.0  2200.0  2400.0  3200.0  3400.0
+1700.0  1900.0  2200.0  2400.0  3300.0  3400.0
+1800.0  1900.0  2200.0  2400.0  3200.0  3400.0
+1800.0  1900.0  2300.0  2400.0  3200.0  3400.0
+1800.0  1900.0  2300.0  2400.0  3100.0  3400.0
+1800.0  2000.0  2200.0  2400.0  3200.0  3300.0
+1800.0  1900.0  2200.0  2400.0  3200.0  3300.0
+1700.0  1800.0  2000.0  2200.0  3200.0  3300.0
+1400.0  1700.0  1800.0  2200.0  3200.0  3300.0
+1400.0  1800.0  2100.0  2500.0  3100.0  3300.0
+1500.0  1800.0  2200.0  2700.0  3100.0  3200.0
+1600.0  2000.0  2300.0  2500.0  2900.0  3200.0
+1800.0  2200.0  2500.0  2700.0  3000.0  3300.0
+2000.0  2400.0  2700.0  2800.0  3100.0  3300.0
+2200.0  2500.0  2800.0  2900.0  3200.0  3300.0
+1500.0  2300.0  2500.0  2900.0  3300.0  3400.0
+1500.0  1700.0  2300.0  2600.0  3000.0  3200.0
+1700.0  1900.0  2300.0  2600.0  3000.0  3300.0
+1600.0  1700.0  2200.0  2300.0  3200.0  3400.0
+1600.0  1700.0  2200.0  2300.0  3300.0  3400.0
+1200.0  2000.0  2400.0  2600.0  3200.0  3300.0
+1000.0  1800.0  2400.0  2500.0  3200.0  3300.0
+1000.0  2000.0  2300.0  2500.0  3200.0  3300.0
+1300.0  1700.0  2200.0  2600.0  3100.0  3200.0
+1600.0  1900.0  2500.0  2700.0  3000.0  3200.0
+1300.0  1900.0  2400.0  2700.0  3000.0  3200.0
+1600.0  1800.0  2200.0  2700.0  3100.0  3200.0
+1700.0  2100.0  2300.0  2500.0  3100.0  3300.0
+1600.0  1900.0  2400.0  2500.0  3200.0  3400.0
+1600.0  2000.0  2300.0  2500.0  3100.0  3300.0
+1600.0  1900.0  2300.0  2400.0  3000.0  3200.0
+1500.0  1900.0  2200.0  2300.0  3000.0  3200.0
+1500.0  2000.0  2200.0  2400.0  3100.0  3200.0
+1400.0  2000.0  2200.0  2400.0  3100.0  3200.0
+1300.0  2000.0  2200.0  2500.0  3100.0  3200.0
+1100.0  2100.0  2300.0  2600.0  3100.0  3200.0
+1000.0  2000.0  2400.0  2500.0  3100.0  3200.0
+1000.0  1700.0  2400.0  2500.0  3100.0  3200.0
+1000.0  1600.0  2400.0  2500.0  3100.0  3200.0
+1100.0  1600.0  2400.0  2500.0  3100.0  3200.0
+1100.0  1600.0  2400.0  2600.0  3100.0  3200.0
+1100.0  1600.0  2500.0  2600.0  3200.0  3300.0
+1100.0  1500.0  2500.0  2600.0  3200.0  3300.0
+1100.0  1500.0  2500.0  2600.0  3100.0  3200.0
+1200.0  1400.0  2400.0  2600.0  3100.0  3200.0
+1300.0  1700.0  2300.0  2400.0  3200.0  3300.0
+1300.0  1800.0  2300.0  2400.0  3200.0  3300.0
+1300.0  1900.0  2300.0  2400.0  3200.0  3300.0
+1400.0  1900.0  2300.0  2400.0  3100.0  3300.0
+1500.0  1700.0  2300.0  2400.0  3000.0  3200.0
+1500.0  1700.0  2300.0  2400.0  3000.0  3300.0
+2100.0  2300.0  2800.0  3000.0  3300.0  3400.0
+2200.0  2400.0  2900.0  3000.0  3200.0  3300.0
+2100.0  2300.0  2900.0  3000.0  3300.0  3400.0
+2000.0  2300.0  2600.0  3000.0  3200.0  3300.0
+1300.0  1600.0  2200.0  2600.0  3100.0  3300.0
+1000.0  2000.0  2300.0  2500.0  3300.0  3400.0
+1000.0  2100.0  2400.0  2600.0  3300.0  3400.0
+1300.0  1700.0  1900.0  2100.0  3100.0  3200.0
+1500.0  1800.0  2000.0  2400.0  3200.0  3300.0
+1600.0  1800.0  2000.0  2500.0  3200.0  3300.0
+1600.0  1800.0  2100.0  2600.0  3200.0  3300.0
+1700.0  1900.0  2100.0  2700.0  3200.0  3300.0
+1600.0  1800.0  2100.0  2500.0  3300.0  3400.0
+1700.0  1900.0  2100.0  2500.0  2900.0  3200.0
+1600.0  1900.0  2100.0  2300.0  2800.0  3200.0
+1200.0  1700.0  2200.0  2600.0  3000.0  3300.0
+1200.0  1700.0  2300.0  2600.0  3100.0  3300.0
+1600.0  2100.0  2400.0  2700.0  3100.0  3300.0
+1500.0  2000.0  2400.0  2600.0  3100.0  3400.0
+2100.0  2200.0  2700.0  3000.0  3200.0  3300.0
+2100.0  2200.0  2700.0  2900.0  3100.0  3300.0
+1500.0  1800.0  2200.0  2600.0  2900.0  3200.0
+1400.0  1600.0  1800.0  2900.0  3200.0  3300.0
+1600.0  1700.0  1900.0  2500.0  3100.0  3200.0
+1700.0  1800.0  2000.0  2600.0  3100.0  3200.0
+1700.0  1800.0  2100.0  2600.0  3200.0  3300.0
+1700.0  1900.0  2200.0  2600.0  3200.0  3300.0
+1700.0  1900.0  2200.0  2600.0  3100.0  3200.0
+1700.0  1900.0  2200.0  2500.0  3100.0  3200.0
+1700.0  1800.0  2200.0  2600.0  3200.0  3300.0
+1700.0  1800.0  2200.0  2500.0  3200.0  3300.0
+1600.0  1800.0  2100.0  2300.0  3100.0  3200.0
+2300.0  2500.0  2800.0  2900.0  3200.0  3300.0
+1700.0  1900.0  2400.0  2700.0  3200.0  3300.0
+1700.0  2000.0  2400.0  2800.0  3200.0  3300.0
+1500.0  1900.0  2300.0  2700.0  3200.0  3300.0
+1500.0  2000.0  2300.0  2500.0  3200.0  3300.0
+1600.0  1900.0  2200.0  2500.0  3200.0  3300.0
+1600.0  1900.0  2200.0  2400.0  3100.0  3300.0
+1600.0  1800.0  2200.0  2300.0  3000.0  3300.0
+1700.0  1800.0  2200.0  2300.0  3000.0  3300.0
+1700.0  1900.0  2200.0  2400.0  3100.0  3300.0
+1700.0  1900.0  2200.0  2400.0  3100.0  3400.0
+1700.0  1800.0  2200.0  2400.0  3100.0  3400.0
+1500.0  1800.0  2300.0  2400.0  2900.0  3300.0
+1500.0  1700.0  2200.0  2400.0  3100.0  3400.0
+1400.0  1700.0  2200.0  2300.0  3100.0  3400.0
+1600.0  1900.0  2500.0  2700.0  3200.0  3400.0
+1500.0  1800.0  2400.0  2600.0  3000.0  3300.0
+1400.0  2100.0  2500.0  2600.0  3100.0  3300.0
+1200.0  1800.0  2100.0  2300.0  3200.0  3300.0
+1800.0  2100.0  2600.0  2900.0  3100.0  3200.0
+2000.0  2400.0  2900.0  3100.0  3300.0  3400.0
+1500.0  1800.0  2200.0  2400.0  3300.0  3400.0
+1500.0  2000.0  2100.0  2700.0  3300.0  3400.0
+1600.0  1800.0  2000.0  2400.0  2900.0  3100.0
+1600.0  1800.0  2200.0  2600.0  3000.0  3200.0
+1500.0  1800.0  2100.0  2600.0  3000.0  3200.0
+1600.0  1900.0  2100.0  2400.0  3000.0  3300.0
+1600.0  2000.0  2200.0  2500.0  3300.0  3400.0
+1600.0  2000.0  2100.0  2400.0  3300.0  3400.0
+1400.0  1700.0  2200.0  2600.0  3000.0  3200.0
+1300.0  1600.0  2200.0  2500.0  3000.0  3200.0
+1300.0  1500.0  2100.0  2500.0  3000.0  3300.0
+1200.0  1600.0  1700.0  2400.0  3300.0  3400.0
+1300.0  1600.0  1700.0  2500.0  3300.0  3400.0
+1300.0  1600.0  1700.0  2500.0  3200.0  3300.0
+1400.0  1700.0  1800.0  2500.0  3200.0  3300.0
+1500.0  1800.0  2000.0  2500.0  3200.0  3300.0
+1500.0  1900.0  2000.0  2500.0  3200.0  3300.0
+1600.0  1800.0  2100.0  2400.0  3200.0  3300.0
+1600.0  1900.0  2100.0  2400.0  3200.0  3300.0
+1500.0  1700.0  2100.0  2200.0  3000.0  3300.0
+1400.0  1600.0  2100.0  2200.0  3000.0  3200.0
+1400.0  1800.0  2100.0  2300.0  3000.0  3200.0
+1600.0  2100.0  2300.0  2700.0  3100.0  3300.0
+1200.0  2100.0  2400.0  2700.0  3300.0  3400.0
+1600.0  2100.0  2200.0  2600.0  3300.0  3400.0
+1300.0  2000.0  2200.0  2500.0  3300.0  3400.0
+1300.0  2300.0  2500.0  2800.0  3300.0  3400.0
+1300.0  2000.0  2300.0  2500.0  3200.0  3300.0
+1700.0  2000.0  2400.0  2800.0  3100.0  3300.0
+1900.0  2200.0  2500.0  2900.0  3100.0  3300.0
+2000.0  2100.0  2600.0  2800.0  3200.0  3300.0
+2000.0  2100.0  2700.0  2900.0  3200.0  3300.0
+1000.0  1900.0  2400.0  2600.0  3300.0  3400.0
+1000.0  1900.0  2500.0  2600.0  3200.0  3300.0
+1000.0  1900.0  2500.0  2600.0  3300.0  3400.0
+1000.0  1800.0  2400.0  2600.0  3200.0  3300.0
+1000.0  1800.0  2400.0  2600.0  3300.0  3400.0
+1000.0  1900.0  2400.0  2600.0  3200.0  3300.0
+1400.0  1700.0  2200.0  2600.0  3100.0  3300.0
+1400.0  1600.0  2100.0  2500.0  3000.0  3300.0
+1300.0  1800.0  2100.0  2400.0  3200.0  3300.0
+1100.0  1900.0  2200.0  2400.0  3200.0  3300.0
+1100.0  1900.0  2300.0  2500.0  3300.0  3400.0
+1100.0  1900.0  2400.0  2500.0  3200.0  3300.0
+1100.0  1900.0  2400.0  2600.0  3200.0  3300.0
+1100.0  1900.0  2300.0  2400.0  3300.0  3400.0
+1200.0  2000.0  2300.0  2500.0  3200.0  3300.0
+1300.0  1900.0  2200.0  2400.0  3300.0  3400.0
+1500.0  1800.0  2200.0  2300.0  3300.0  3400.0
+1700.0  2200.0  2700.0  3000.0  3300.0  3400.0
+1900.0  2200.0  2800.0  3000.0  3200.0  3300.0
+1900.0  2200.0  2500.0  3000.0  3200.0  3300.0
+1600.0  2100.0  2300.0  2700.0  3300.0  3400.0
+1600.0  2000.0  2300.0  2700.0  3300.0  3400.0
+1600.0  2100.0  2500.0  3000.0  3300.0  3400.0
+1600.0  2200.0  2600.0  3000.0  3300.0  3400.0
+1900.0  2400.0  2900.0  3100.0  3300.0  3400.0
+2100.0  2500.0  2900.0  3000.0  3300.0  3400.0
+2000.0  2400.0  2900.0  3000.0  3200.0  3300.0
+1700.0  2200.0  2400.0  2900.0  3200.0  3300.0
+1300.0  1800.0  2100.0  2500.0  3200.0  3300.0
+1500.0  1600.0  1800.0  2300.0  3000.0  3200.0
+1500.0  1600.0  1900.0  2000.0  3000.0  3300.0
+1400.0  1800.0  2200.0  2600.0  3200.0  3300.0
+1600.0  1800.0  2200.0  2400.0  2900.0  3100.0
+1500.0  1700.0  2100.0  2400.0  2900.0  3100.0
+1400.0  1700.0  2100.0  2400.0  3000.0  3200.0
+1400.0  1700.0  2300.0  2600.0  3200.0  3300.0
+1300.0  1900.0  2300.0  2600.0  3200.0  3300.0
+1000.0  2100.0  2500.0  2700.0  3300.0  3400.0
+1400.0  1900.0  2000.0  2500.0  3200.0  3300.0
+1600.0  1900.0  2100.0  2500.0  3300.0  3400.0
+1600.0  2000.0  2300.0  2500.0  3200.0  3300.0
+2200.0  2400.0  2800.0  3000.0  3200.0  3300.0
+1900.0  2300.0  2400.0  2700.0  3100.0  3200.0
+1900.0  2200.0  2300.0  2600.0  3100.0  3200.0
+1900.0  2100.0  2300.0  2800.0  3200.0  3300.0
+1700.0  2000.0  2400.0  2700.0  3200.0  3300.0
+1900.0  2200.0  2500.0  2700.0  3100.0  3300.0
+1700.0  1800.0  2200.0  2500.0  3300.0  3400.0
+1700.0  1900.0  2200.0  2700.0  3200.0  3300.0
+1700.0  1900.0  2300.0  2700.0  3300.0  3400.0
+1800.0  2000.0  2400.0  2800.0  3300.0  3400.0
+1800.0  2000.0  2300.0  2600.0  3300.0  3400.0
+1900.0  2000.0  2300.0  2500.0  3200.0  3300.0
+1900.0  2100.0  2400.0  2600.0  3200.0  3300.0
+2000.0  2200.0  2400.0  2700.0  3200.0  3300.0
+2100.0  2200.0  2500.0  2900.0  3200.0  3300.0
+2200.0  2300.0  2600.0  2900.0  3200.0  3300.0
+2200.0  2300.0  2700.0  2900.0  3100.0  3300.0
+2100.0  2400.0  2600.0  2800.0  3200.0  3300.0
+1900.0  2200.0  2600.0  2800.0  3000.0  3200.0
+1800.0  2100.0  2400.0  2700.0  3000.0  3200.0
+1800.0  2000.0  2400.0  2700.0  3100.0  3200.0
+1600.0  2000.0  2200.0  2500.0  3100.0  3200.0
+1300.0  1900.0  2100.0  2300.0  3100.0  3300.0
+1200.0  1600.0  2100.0  2200.0  3200.0  3400.0
+1100.0  2000.0  2400.0  2600.0  3200.0  3300.0
+1400.0  1700.0  2100.0  2300.0  3100.0  3300.0
+1400.0  1900.0  2200.0  2500.0  3300.0  3400.0
+1300.0  1800.0  2200.0  2700.0  3200.0  3300.0
+1300.0  1900.0  2200.0  2600.0  3200.0  3300.0
+1400.0  2000.0  2200.0  2700.0  3200.0  3300.0
+1400.0  2000.0  2200.0  2600.0  3300.0  3400.0
+1400.0  2000.0  2200.0  2500.0  3200.0  3300.0
+1400.0  1900.0  2200.0  2400.0  3200.0  3300.0
+1400.0  1800.0  2200.0  2300.0  3000.0  3300.0
+1400.0  1800.0  2200.0  2300.0  3100.0  3300.0
+1400.0  1800.0  2100.0  2300.0  3200.0  3400.0
+1500.0  2000.0  2400.0  2700.0  3300.0  3400.0
+1700.0  2100.0  2500.0  3000.0  3300.0  3400.0
+1400.0  1900.0  2300.0  2800.0  3200.0  3300.0
+1400.0  2000.0  2200.0  2400.0  3200.0  3300.0
+1200.0  1900.0  2200.0  2400.0  3200.0  3300.0
+1200.0  1900.0  2200.0  2500.0  3200.0  3300.0
+1200.0  2000.0  2200.0  2500.0  3300.0  3400.0
+1700.0  2100.0  2300.0  2400.0  3200.0  3400.0
+1400.0  1600.0  1800.0  2500.0  3100.0  3200.0
+1500.0  1800.0  2100.0  2500.0  3000.0  3200.0
+1700.0  1800.0  2200.0  2500.0  3100.0  3300.0
+2000.0  2100.0  2500.0  2800.0  3100.0  3300.0
+1900.0  2100.0  2200.0  2700.0  3100.0  3200.0
+1500.0  1800.0  2100.0  2300.0  3200.0  3400.0
+1600.0  1800.0  2000.0  2300.0  3200.0  3400.0
+1600.0  1800.0  2100.0  2300.0  3200.0  3400.0
+1500.0  1800.0  2000.0  2300.0  3300.0  3400.0
+1500.0  1700.0  1900.0  2400.0  3300.0  3400.0
+1600.0  1900.0  2000.0  2700.0  3100.0  3200.0
+1700.0  1900.0  2200.0  2600.0  3100.0  3300.0
+1700.0  1900.0  2200.0  2500.0  3200.0  3300.0
+1700.0  2000.0  2400.0  2600.0  3100.0  3300.0
+1700.0  2000.0  2400.0  2700.0  3100.0  3200.0
+2300.0  2400.0  2700.0  3000.0  3200.0  3300.0
+2200.0  2400.0  2600.0  2900.0  3200.0  3300.0
+2200.0  2400.0  2500.0  2800.0  3200.0  3300.0
+2100.0  2400.0  2500.0  2800.0  3200.0  3300.0
+2000.0  2400.0  2500.0  2700.0  3200.0  3300.0
+1900.0  2300.0  2400.0  2800.0  3200.0  3300.0
+1900.0  2300.0  2600.0  2700.0  3100.0  3300.0
+2000.0  2400.0  2800.0  2900.0  3200.0  3300.0
+1700.0  2200.0  2500.0  2800.0  3200.0  3400.0
+1500.0  2100.0  2400.0  2600.0  3100.0  3300.0
+1500.0  1900.0  2300.0  2500.0  3200.0  3400.0
+1400.0  1900.0  2300.0  2400.0  3200.0  3300.0
+1100.0  1700.0  2400.0  2600.0  3200.0  3300.0
+1100.0  1700.0  2400.0  2600.0  3300.0  3400.0
+1100.0  1800.0  2400.0  2500.0  3300.0  3400.0
+1100.0  1800.0  2400.0  2500.0  3200.0  3300.0
+1100.0  2000.0  2500.0  2600.0  3200.0  3300.0
+1100.0  2100.0  2500.0  2600.0  3200.0  3300.0
+1100.0  2100.0  2500.0  2700.0  3200.0  3300.0
+1000.0  2200.0  2600.0  2700.0  3200.0  3300.0
+1100.0  2300.0  2600.0  2800.0  3200.0  3300.0
+1100.0  2100.0  2500.0  2700.0  3100.0  3200.0
+1500.0  1700.0  2300.0  2500.0  2900.0  3200.0
+1600.0  1700.0  2200.0  2600.0  2800.0  3100.0
+1600.0  1700.0  2100.0  2600.0  2800.0  3000.0
+1500.0  1700.0  2100.0  2500.0  2800.0  3000.0
+1500.0  1600.0  2200.0  2500.0  2800.0  3100.0
+1500.0  1600.0  2300.0  2600.0  2800.0  3100.0
+1400.0  1500.0  2300.0  2700.0  2900.0  3100.0
+1400.0  1500.0  2200.0  2700.0  2800.0  3100.0
+1400.0  1600.0  2000.0  2700.0  2900.0  3100.0
+1500.0  1700.0  2200.0  2700.0  3100.0  3300.0
+1500.0  1800.0  2300.0  2700.0  3100.0  3300.0
+1600.0  1700.0  2300.0  2700.0  3000.0  3300.0
+1700.0  1800.0  2200.0  2700.0  2900.0  3200.0
+1800.0  1900.0  2200.0  2700.0  2900.0  3100.0
+1700.0  1900.0  2200.0  2600.0  2900.0  3000.0
+1800.0  2000.0  2300.0  2700.0  2900.0  3100.0
+1800.0  2000.0  2300.0  2800.0  3000.0  3200.0
+1800.0  2000.0  2400.0  2800.0  3000.0  3200.0
+1800.0  1900.0  2300.0  2800.0  3000.0  3200.0
+1500.0  1700.0  2200.0  2500.0  3000.0  3100.0
+1700.0  2100.0  2400.0  2800.0  3100.0  3200.0
+1800.0  2200.0  2700.0  2900.0  3400.0  3500.0
+1900.0  2400.0  2700.0  2900.0  3400.0  3500.0
+2000.0  2400.0  2600.0  2900.0  3300.0  3400.0
+1900.0  2400.0  2500.0  2800.0  3200.0  3300.0
+1900.0  2300.0  2500.0  2600.0  3200.0  3300.0
+1700.0  1900.0  2400.0  2500.0  3100.0  3200.0
+1600.0  1700.0  2300.0  2600.0  2900.0  3100.0
+1600.0  1700.0  2400.0  2600.0  2900.0  3100.0
+1600.0  2100.0  2600.0  2800.0  3300.0  3400.0
+1700.0  2200.0  2700.0  3000.0  3200.0  3300.0
+1700.0  2300.0  2800.0  2900.0  3200.0  3300.0
+1700.0  2300.0  2700.0  3000.0  3200.0  3300.0
+1600.0  2100.0  2700.0  2900.0  3300.0  3400.0
+1200.0  1600.0  2400.0  2600.0  3000.0  3300.0
+1100.0  1400.0  2400.0  2700.0  2900.0  3100.0
+1200.0  1800.0  2200.0  2500.0  3100.0  3300.0
+1200.0  1700.0  2200.0  2500.0  3100.0  3300.0
+1800.0  1900.0  2300.0  2500.0  2900.0  3200.0
+1900.0  2000.0  2400.0  2500.0  2800.0  3100.0
+2000.0  2200.0  2400.0  2500.0  2800.0  3100.0
+2000.0  2200.0  2400.0  2600.0  2800.0  3200.0
+2000.0  2100.0  2500.0  2700.0  3100.0  3400.0
+1900.0  2000.0  2600.0  2700.0  3100.0  3300.0
+1900.0  2000.0  2600.0  2700.0  3200.0  3300.0
+1900.0  2400.0  2700.0  3000.0  3300.0  3400.0
+2000.0  2400.0  2800.0  2900.0  3200.0  3400.0
+1900.0  2000.0  2300.0  2600.0  3000.0  3200.0
+1900.0  2100.0  2400.0  2700.0  3000.0  3200.0
+1900.0  2100.0  2400.0  2800.0  3100.0  3200.0
+1900.0  2100.0  2400.0  2800.0  3300.0  3400.0
+1500.0  1800.0  2100.0  2600.0  3100.0  3300.0
+1600.0  1800.0  2100.0  2200.0  3000.0  3300.0
+1800.0  2100.0  2300.0  2500.0  3000.0  3200.0
+2000.0  2100.0  2300.0  2500.0  3000.0  3300.0
+2000.0  2100.0  2300.0  2500.0  2900.0  3300.0
+2000.0  2100.0  2300.0  2400.0  2900.0  3300.0
+1600.0  1800.0  2300.0  2500.0  2900.0  3200.0
+1700.0  1900.0  2400.0  2700.0  3000.0  3200.0
+1700.0  2000.0  2400.0  2600.0  3000.0  3300.0
+1600.0  2000.0  2300.0  2700.0  3000.0  3200.0
+1500.0  1800.0  2300.0  2600.0  3100.0  3200.0
+1700.0  1800.0  2300.0  2400.0  2800.0  3000.0
+1800.0  2000.0  2400.0  2500.0  2900.0  3200.0
+1800.0  2000.0  2400.0  2600.0  3000.0  3200.0
+1900.0  2000.0  2400.0  2500.0  3000.0  3200.0
+1900.0  2000.0  2300.0  2500.0  3000.0  3200.0
+1800.0  1900.0  2200.0  2400.0  2900.0  3200.0
+1800.0  1900.0  2200.0  2300.0  2900.0  3200.0
+1600.0  1800.0  2200.0  2400.0  3100.0  3300.0
+1600.0  2000.0  2400.0  2700.0  3100.0  3200.0
+1800.0  2100.0  2500.0  2700.0  3000.0  3200.0
+2000.0  2200.0  2500.0  2700.0  3000.0  3200.0
+2000.0  2300.0  2500.0  2700.0  3000.0  3200.0
+2000.0  2300.0  2400.0  2700.0  3000.0  3200.0
+2100.0  2200.0  2400.0  2500.0  3000.0  3300.0
+1900.0  2000.0  2300.0  2600.0  2800.0  3300.0
+1900.0  2000.0  2400.0  2700.0  3100.0  3300.0
+1500.0  2000.0  2400.0  2700.0  3100.0  3300.0
+1600.0  1900.0  2500.0  2800.0  3000.0  3300.0
+1900.0  2000.0  2400.0  2700.0  2900.0  3200.0
+2000.0  2200.0  2400.0  2700.0  2900.0  3200.0
+2100.0  2200.0  2400.0  2700.0  2900.0  3200.0
+2100.0  2300.0  2400.0  2600.0  2800.0  3200.0
+1300.0  2000.0  2300.0  2500.0  2700.0  3100.0
+1800.0  1900.0  2100.0  2400.0  2900.0  3100.0
+1700.0  1900.0  2100.0  2500.0  2900.0  3100.0
+1800.0  1900.0  2300.0  2600.0  3100.0  3300.0
+1600.0  1700.0  2300.0  2600.0  2800.0  3200.0
+1700.0  1800.0  2300.0  2600.0  2800.0  3100.0
+1700.0  1800.0  2300.0  2700.0  2800.0  3200.0
+1500.0  1700.0  2300.0  2600.0  3000.0  3300.0
+1400.0  1700.0  2200.0  2500.0  3000.0  3300.0
+1400.0  1600.0  2200.0  2300.0  3000.0  3300.0
+1400.0  1600.0  2200.0  2400.0  2800.0  3300.0
+1500.0  1600.0  2200.0  2400.0  2900.0  3300.0
+1500.0  1600.0  2200.0  2400.0  2800.0  3300.0
+1500.0  1700.0  2200.0  2500.0  3000.0  3200.0
+1700.0  1900.0  2300.0  2700.0  3000.0  3300.0
+1600.0  1800.0  2400.0  2700.0  3000.0  3200.0
+1600.0  2000.0  2500.0  2800.0  3000.0  3300.0
+2000.0  2200.0  2500.0  2600.0  3200.0  3300.0
+1600.0  1800.0  2200.0  2500.0  3100.0  3200.0
+1500.0  1700.0  1800.0  2300.0  3300.0  3400.0
+1400.0  1600.0  1800.0  2000.0  3200.0  3400.0
+1400.0  1600.0  1800.0  1900.0  3100.0  3400.0
+1400.0  1600.0  1900.0  2000.0  2900.0  3300.0
+1400.0  1500.0  1900.0  2000.0  2900.0  3200.0
+1900.0  2200.0  2500.0  2800.0  3100.0  3200.0
+1800.0  2200.0  2500.0  2700.0  3000.0  3200.0
+1800.0  2200.0  2600.0  2700.0  3100.0  3200.0
+2000.0  2300.0  2700.0  2800.0  3200.0  3300.0
+2100.0  2200.0  2600.0  2800.0  3000.0  3300.0
+2100.0  2200.0  2500.0  2700.0  3100.0  3300.0
+1700.0  1800.0  2000.0  2100.0  2800.0  3200.0
+1600.0  1700.0  1900.0  2000.0  2800.0  3200.0
+1400.0  1500.0  1800.0  1900.0  2800.0  3200.0
+1400.0  1800.0  2100.0  2400.0  3000.0  3200.0
+1600.0  1900.0  2300.0  2600.0  3000.0  3300.0
+1600.0  1900.0  2300.0  2500.0  3100.0  3300.0
+1600.0  1900.0  2400.0  2700.0  3000.0  3200.0
+1600.0  1900.0  2400.0  2700.0  3000.0  3300.0
+1500.0  1900.0  2400.0  2700.0  3000.0  3300.0
+1100.0  1400.0  2500.0  2800.0  3000.0  3300.0
+1100.0  1300.0  2300.0  2800.0  3000.0  3200.0
+1400.0  1500.0  2100.0  2700.0  2900.0  3100.0
+1500.0  1600.0  2100.0  2700.0  2900.0  3100.0
+1700.0  1800.0  2200.0  2600.0  2800.0  3100.0
+1800.0  2000.0  2300.0  2600.0  2800.0  3000.0
+1900.0  2100.0  2300.0  2600.0  2800.0  3100.0
+2000.0  2100.0  2300.0  2600.0  2800.0  3100.0
+2000.0  2100.0  2400.0  2500.0  2800.0  3200.0
+1900.0  2100.0  2300.0  2500.0  2800.0  3200.0
+1800.0  1900.0  2300.0  2500.0  2800.0  3300.0
+1700.0  1800.0  2300.0  2500.0  3000.0  3300.0
+1700.0  1900.0  2400.0  2600.0  3000.0  3200.0
+1500.0  1900.0  2200.0  2600.0  3100.0  3300.0
+1300.0  1500.0  1800.0  1900.0  2900.0  3200.0
+1300.0  1500.0  1800.0  1900.0  2900.0  3300.0
+1300.0  1500.0  1800.0  1900.0  2800.0  3200.0
+1400.0  1500.0  1700.0  1900.0  2800.0  3200.0
+1400.0  1500.0  1700.0  1800.0  2800.0  3200.0
+1700.0  2000.0  2400.0  2500.0  3100.0  3300.0
+2100.0  2400.0  2700.0  2800.0  3300.0  3500.0
+1800.0  2300.0  2700.0  2900.0  3200.0  3400.0
+1700.0  2300.0  2700.0  2900.0  3300.0  3400.0
+1700.0  2100.0  2700.0  2900.0  3300.0  3400.0
+1800.0  2400.0  2700.0  2900.0  3300.0  3400.0
+1900.0  2500.0  2800.0  3000.0  3300.0  3400.0
+2000.0  2500.0  2800.0  3000.0  3300.0  3400.0
+2000.0  2400.0  2700.0  3000.0  3200.0  3400.0
+1900.0  2300.0  2700.0  3000.0  3200.0  3400.0
+1800.0  2000.0  2500.0  2700.0  2900.0  3200.0
+1800.0  2000.0  2400.0  2700.0  2900.0  3100.0
+1900.0  2000.0  2300.0  2700.0  2900.0  3000.0
+1900.0  2000.0  2400.0  2700.0  2900.0  3100.0
+1800.0  1900.0  2400.0  2700.0  2900.0  3100.0
+1800.0  1900.0  2300.0  2700.0  2800.0  3100.0
+1800.0  1900.0  2300.0  2600.0  2800.0  3100.0
+1500.0  1800.0  2400.0  2700.0  3200.0  3400.0
+1600.0  1800.0  2500.0  2700.0  3100.0  3400.0
+1500.0  1700.0  2400.0  2700.0  3000.0  3300.0
+1400.0  1500.0  2400.0  2700.0  2900.0  3200.0
+1300.0  1500.0  2300.0  2700.0  2900.0  3100.0
+1400.0  1600.0  2100.0  2600.0  2800.0  3000.0
+1500.0  1600.0  2100.0  2600.0  2800.0  3000.0
+1400.0  1600.0  2200.0  2400.0  3000.0  3200.0
+1300.0  1600.0  2200.0  2500.0  2900.0  3200.0
+1300.0  1700.0  2200.0  2600.0  3000.0  3300.0
+1300.0  1700.0  2200.0  2700.0  3100.0  3200.0
+1200.0  1400.0  2200.0  2700.0  2900.0  3100.0
+1100.0  1400.0  2300.0  2700.0  2900.0  3100.0
+1100.0  1300.0  2400.0  2800.0  3000.0  3200.0
+1200.0  1600.0  2300.0  2600.0  3100.0  3200.0
+1500.0  2100.0  2400.0  2700.0  3200.0  3300.0
+1800.0  2100.0  2400.0  2800.0  3200.0  3300.0
+1600.0  2100.0  2400.0  2800.0  3200.0  3300.0
+1600.0  2000.0  2500.0  2900.0  3200.0  3300.0
+1800.0  2000.0  2500.0  2900.0  3200.0  3300.0
+1700.0  1900.0  2400.0  2800.0  3100.0  3300.0
+1600.0  1800.0  2400.0  2700.0  3100.0  3300.0
+1500.0  1600.0  2200.0  2500.0  2900.0  3200.0
+1500.0  1600.0  2200.0  2500.0  2800.0  3200.0
+1400.0  1600.0  2100.0  2500.0  2800.0  3100.0
+1200.0  1400.0  2200.0  2500.0  2700.0  3100.0
+1100.0  1400.0  2400.0  2800.0  2900.0  3100.0
+1400.0  1700.0  2300.0  2600.0  2900.0  3200.0
+1500.0  1800.0  2300.0  2500.0  2900.0  3300.0
+1500.0  1700.0  2000.0  2100.0  3000.0  3300.0
+1500.0  1700.0  2000.0  2200.0  3100.0  3300.0
+1500.0  1700.0  2100.0  2300.0  3100.0  3200.0
+1600.0  1900.0  2500.0  2700.0  3100.0  3200.0
+1800.0  2300.0  2800.0  3100.0  3300.0  3400.0
+1800.0  2200.0  2700.0  2900.0  3200.0  3400.0
+1700.0  2200.0  2700.0  2800.0  3200.0  3400.0
+1500.0  1800.0  2600.0  2700.0  3000.0  3200.0
+1500.0  1700.0  2300.0  2700.0  2800.0  3100.0
+1400.0  1500.0  2100.0  2200.0  2700.0  3200.0
+1400.0  1500.0  2000.0  2100.0  2600.0  3100.0
+1300.0  1500.0  1900.0  2000.0  2500.0  3100.0
+1400.0  1500.0  1800.0  1900.0  2700.0  3200.0
+1500.0  1600.0  2000.0  2100.0  2600.0  3100.0
+1700.0  1800.0  2000.0  2200.0  2600.0  3100.0
+1700.0  1800.0  2100.0  2200.0  2700.0  3100.0
+1600.0  2000.0  2400.0  2500.0  3000.0  3200.0
+2000.0  2200.0  2500.0  2900.0  3100.0  3300.0
+1900.0  2200.0  2400.0  2600.0  2900.0  3100.0
+1600.0  1700.0  2200.0  2400.0  2700.0  3300.0
+1700.0  1800.0  2300.0  2400.0  2800.0  3200.0
+1800.0  1900.0  2300.0  2500.0  2800.0  3200.0
+1900.0  2100.0  2400.0  2500.0  3000.0  3300.0
+2100.0  2200.0  2500.0  2600.0  3000.0  3300.0
+2000.0  2100.0  2500.0  2700.0  2900.0  3200.0
+1700.0  1900.0  2200.0  2700.0  2800.0  3100.0
+1800.0  1900.0  2400.0  2700.0  2800.0  3200.0
+1800.0  1900.0  2400.0  2700.0  2900.0  3200.0
+1700.0  1800.0  2200.0  2700.0  2800.0  3100.0
+1700.0  1800.0  2200.0  2700.0  3000.0  3200.0
+1900.0  2100.0  2500.0  2900.0  3100.0  3300.0
+1700.0  2000.0  2500.0  2700.0  3200.0  3400.0
+1900.0  2200.0  2700.0  3000.0  3300.0  3400.0
+2000.0  2400.0  2800.0  3100.0  3400.0  3500.0
+2100.0  2400.0  2600.0  2900.0  3200.0  3300.0
+2100.0  2400.0  2500.0  2700.0  3100.0  3300.0
+1800.0  2100.0  2500.0  2700.0  3200.0  3300.0
+1700.0  2100.0  2400.0  2700.0  3200.0  3300.0
+1500.0  1600.0  1800.0  1900.0  2600.0  3100.0
+1500.0  1600.0  1900.0  2000.0  2500.0  3100.0
+1600.0  1700.0  2000.0  2100.0  2500.0  3100.0
+1800.0  2100.0  2300.0  2500.0  2800.0  3200.0
+1900.0  2100.0  2300.0  2500.0  2700.0  3200.0
+2000.0  2200.0  2400.0  2600.0  2900.0  3300.0
+2000.0  2200.0  2400.0  2600.0  2900.0  3200.0
+2000.0  2100.0  2400.0  2500.0  2900.0  3300.0
+1800.0  2200.0  2500.0  2900.0  3400.0  3500.0
+1800.0  2300.0  2500.0  2900.0  3300.0  3400.0
+2000.0  2300.0  2500.0  2800.0  3000.0  3300.0
+1800.0  2000.0  2400.0  2500.0  2800.0  3300.0
+1100.0  1400.0  2600.0  2800.0  3000.0  3200.0
+1300.0  1500.0  2200.0  2700.0  2900.0  3200.0
+1400.0  1600.0  2200.0  2700.0  3000.0  3200.0
+1400.0  1600.0  2200.0  2600.0  3100.0  3200.0
+1500.0  1800.0  2200.0  2400.0  3100.0  3300.0
+1700.0  1800.0  2200.0  2500.0  3000.0  3300.0
+1700.0  1800.0  2200.0  2600.0  3000.0  3200.0
+1700.0  1800.0  2300.0  2600.0  3000.0  3200.0
+1700.0  1800.0  2400.0  2700.0  3000.0  3100.0
+1600.0  1700.0  2500.0  2800.0  3000.0  3200.0
+1400.0  1500.0  2200.0  2700.0  2900.0  3100.0
+1300.0  1400.0  2100.0  2700.0  2900.0  3200.0
+1500.0  1900.0  2300.0  2600.0  3000.0  3200.0
+1400.0  1600.0  2200.0  2500.0  2700.0  3100.0
+1600.0  1700.0  2200.0  2500.0  2800.0  3200.0
+1600.0  1800.0  2100.0  2500.0  2900.0  3200.0
+1600.0  1800.0  2100.0  2600.0  3000.0  3200.0
+1800.0  2100.0  2400.0  2800.0  3100.0  3300.0
+1800.0  2100.0  2400.0  2700.0  3000.0  3300.0
+2000.0  2100.0  2500.0  2800.0  3000.0  3200.0
+1800.0  2000.0  2500.0  2700.0  3000.0  3200.0
+1600.0  1900.0  2300.0  2700.0  2900.0  3200.0
+1600.0  1900.0  2100.0  2500.0  2800.0  3100.0
+1700.0  1900.0  2100.0  2500.0  2800.0  3000.0
+1700.0  1800.0  2100.0  2600.0  2800.0  3000.0
+1600.0  1700.0  2000.0  2600.0  2800.0  3000.0
+1400.0  1700.0  2200.0  2700.0  3000.0  3200.0
+1500.0  1800.0  2300.0  2700.0  3000.0  3200.0
+1600.0  1800.0  2300.0  2600.0  3000.0  3300.0
+1600.0  1800.0  2300.0  2600.0  3100.0  3300.0
+1600.0  1900.0  2300.0  2600.0  3100.0  3300.0
+1200.0  1300.0  2100.0  2700.0  3000.0  3100.0
+1300.0  1400.0  2100.0  2700.0  2900.0  3100.0
+1300.0  1400.0  2200.0  2700.0  2900.0  3100.0
+1300.0  1400.0  2100.0  2600.0  2800.0  3100.0
+1300.0  1500.0  2100.0  2600.0  2800.0  3100.0
+1500.0  1600.0  1900.0  2500.0  2900.0  3100.0
+1500.0  1700.0  2100.0  2700.0  2900.0  3200.0
+1600.0  1900.0  2400.0  2700.0  3200.0  3300.0
+1900.0  2100.0  2500.0  2800.0  3200.0  3400.0
+1700.0  2000.0  2400.0  2800.0  3200.0  3400.0
+1600.0  1700.0  2200.0  2400.0  2800.0  3300.0
+1500.0  1600.0  2200.0  2400.0  3000.0  3300.0
+1500.0  1700.0  2300.0  2700.0  3100.0  3300.0
+1400.0  1500.0  2000.0  2600.0  2900.0  3100.0
+1400.0  1500.0  2100.0  2500.0  2800.0  3100.0
+1400.0  1700.0  2200.0  2600.0  3000.0  3300.0
+1000.0  1500.0  2600.0  2800.0  3100.0  3400.0
+1300.0  1500.0  2500.0  2700.0  2900.0  3300.0
+1500.0  1600.0  2200.0  2600.0  2800.0  3100.0
+1700.0  1800.0  2200.0  2400.0  2700.0  3200.0
+1700.0  1800.0  2100.0  2400.0  2600.0  3100.0
+1600.0  1700.0  2100.0  2400.0  2700.0  3200.0
+1600.0  1900.0  2300.0  2700.0  3000.0  3300.0
+1500.0  1600.0  2000.0  2400.0  3000.0  3300.0
+1600.0  1800.0  2300.0  2600.0  3200.0  3300.0
+1700.0  1800.0  2400.0  2600.0  3200.0  3400.0
+1600.0  1800.0  2400.0  2600.0  3200.0  3400.0
+1700.0  1800.0  2300.0  2600.0  3000.0  3300.0
+1700.0  1800.0  2100.0  2500.0  2900.0  3200.0
+1800.0  1900.0  2100.0  2600.0  2800.0  3000.0
+1800.0  1900.0  2200.0  2600.0  2800.0  3000.0
+1800.0  1900.0  2200.0  2600.0  2900.0  3100.0
+1700.0  1800.0  2100.0  2600.0  2900.0  3100.0
+1600.0  1700.0  2100.0  2700.0  2900.0  3100.0
+1400.0  1600.0  2100.0  2700.0  2900.0  3200.0
+1200.0  1600.0  2200.0  2400.0  3000.0  3300.0
+1600.0  1900.0  2300.0  2700.0  3100.0  3400.0
+1200.0  1800.0  2300.0  2700.0  3100.0  3300.0
+1600.0  2000.0  2400.0  2800.0  3100.0  3300.0
+1700.0  1900.0  2100.0  2600.0  3100.0  3300.0
+1800.0  1900.0  2300.0  2600.0  3100.0  3400.0
+1900.0  2000.0  2300.0  2600.0  3200.0  3300.0
+1900.0  2000.0  2300.0  2600.0  3100.0  3300.0
+1900.0  2100.0  2300.0  2700.0  3100.0  3300.0
+1200.0  1400.0  2200.0  2800.0  3000.0  3100.0
+1800.0  2100.0  2400.0  2700.0  3200.0  3400.0
+1600.0  2100.0  2500.0  2800.0  3100.0  3300.0
+1600.0  2000.0  2500.0  2800.0  3200.0  3300.0
+1700.0  2000.0  2500.0  2800.0  3200.0  3400.0
+1700.0  1900.0  2700.0  2800.0  3100.0  3400.0
+1600.0  1800.0  2400.0  2600.0  3100.0  3400.0
+1600.0  1800.0  2300.0  2500.0  3100.0  3400.0
+1600.0  1800.0  2200.0  2500.0  3100.0  3400.0
+1600.0  1800.0  2100.0  2300.0  3100.0  3400.0
+1500.0  1700.0  2000.0  2200.0  3000.0  3300.0
+1500.0  1600.0  1900.0  2000.0  3000.0  3200.0
+1300.0  1500.0  1700.0  1900.0  2800.0  3200.0
+1800.0  2000.0  2300.0  2600.0  3000.0  3200.0
+1700.0  2000.0  2200.0  2600.0  3000.0  3200.0
+1600.0  1900.0  2400.0  2600.0  3000.0  3300.0
+1300.0  1700.0  2100.0  2400.0  2900.0  3200.0
+1600.0  1800.0  2400.0  2600.0  3000.0  3300.0
+1300.0  1600.0  2200.0  2300.0  2900.0  3200.0
+1300.0  1400.0  2100.0  2200.0  3000.0  3200.0
+1300.0  1500.0  1800.0  2000.0  3000.0  3200.0
+1300.0  1400.0  1800.0  1900.0  2800.0  3200.0
+1300.0  1700.0  2200.0  2500.0  3000.0  3200.0
+1200.0  1800.0  2300.0  2600.0  3200.0  3300.0
+1400.0  1900.0  2300.0  2700.0  3100.0  3300.0
+1500.0  2000.0  2400.0  2600.0  3000.0  3300.0
+1600.0  2000.0  2500.0  2600.0  3100.0  3300.0
+1600.0  1900.0  2500.0  2700.0  3100.0  3300.0
+1600.0  2000.0  2500.0  2600.0  3000.0  3200.0
+1400.0  1600.0  2300.0  2600.0  2800.0  3200.0
+1300.0  1500.0  2000.0  2600.0  2700.0  3000.0
+1300.0  1500.0  2200.0  2600.0  2800.0  3100.0
+1400.0  1500.0  2100.0  2600.0  2800.0  3100.0
+1400.0  1500.0  2100.0  2600.0  2800.0  3000.0
+1500.0  1600.0  2000.0  2500.0  2700.0  3000.0
+1500.0  1700.0  2000.0  2500.0  2700.0  3000.0
+1600.0  1700.0  2000.0  2500.0  2800.0  3000.0
+1700.0  1800.0  2100.0  2500.0  2900.0  3100.0
+1700.0  1900.0  2100.0  2500.0  2900.0  3000.0
+1800.0  2000.0  2200.0  2600.0  2800.0  3000.0
+1800.0  2100.0  2300.0  2600.0  2800.0  3100.0
+1800.0  2100.0  2300.0  2600.0  2900.0  3100.0
+1800.0  2000.0  2200.0  2600.0  2900.0  3100.0
+1800.0  2000.0  2300.0  2600.0  2900.0  3100.0
+1800.0  2000.0  2300.0  2600.0  2800.0  3100.0
+1700.0  1900.0  2200.0  2600.0  2800.0  3000.0
+1700.0  1800.0  2100.0  2500.0  2700.0  3000.0
+1500.0  1700.0  2200.0  2400.0  2800.0  3300.0
+1500.0  1900.0  2300.0  2500.0  3100.0  3300.0
+1700.0  1800.0  2200.0  2800.0  3100.0  3200.0
+1700.0  1900.0  2100.0  2700.0  3000.0  3200.0
+1900.0  2100.0  2400.0  2600.0  3000.0  3200.0
+2000.0  2200.0  2400.0  2700.0  3000.0  3200.0
+1900.0  2300.0  2400.0  2700.0  3100.0  3300.0
+1500.0  1600.0  1800.0  2000.0  3100.0  3300.0
+1200.0  1400.0  1900.0  2500.0  2900.0  3100.0
+1600.0  1700.0  2000.0  2100.0  2900.0  3300.0
+1700.0  1800.0  2100.0  2200.0  2900.0  3300.0
+1800.0  1900.0  2200.0  2300.0  3000.0  3300.0
+1900.0  2000.0  2200.0  2300.0  3100.0  3300.0
+2000.0  2100.0  2300.0  2500.0  3100.0  3400.0
+1900.0  2100.0  2300.0  2500.0  3000.0  3200.0
+1800.0  2000.0  2300.0  2400.0  2900.0  3200.0
+1900.0  2200.0  2600.0  2800.0  3100.0  3300.0
+2000.0  2400.0  2600.0  2700.0  3200.0  3400.0
+1800.0  2200.0  2600.0  2700.0  3100.0  3300.0
+1600.0  2100.0  2600.0  2700.0  3100.0  3300.0
+1600.0  2100.0  2500.0  2800.0  3200.0  3400.0
+1900.0  2200.0  2500.0  2800.0  3200.0  3400.0
+1800.0  2000.0  2500.0  2800.0  3300.0  3400.0
+1700.0  1900.0  2600.0  2800.0  3100.0  3400.0
+1600.0  1700.0  2400.0  2700.0  3100.0  3300.0
+1400.0  1600.0  2200.0  2500.0  2800.0  3200.0
+1400.0  1600.0  2300.0  2500.0  2900.0  3200.0
+1400.0  1500.0  2300.0  2600.0  2900.0  3200.0
+1300.0  1500.0  2400.0  2600.0  3000.0  3300.0
+1200.0  1400.0  2400.0  2600.0  2900.0  3300.0
+1200.0  1300.0  2300.0  2600.0  2800.0  3200.0
+1200.0  1300.0  2300.0  2600.0  2800.0  3100.0
+1200.0  1400.0  2300.0  2600.0  2800.0  3200.0
+1200.0  1400.0  2300.0  2500.0  2800.0  3200.0
+1200.0  1400.0  2300.0  2500.0  2700.0  3200.0
+1300.0  1400.0  2300.0  2500.0  2700.0  3200.0
+1300.0  1400.0  2300.0  2400.0  2900.0  3200.0
+1300.0  1600.0  2300.0  2400.0  2900.0  3200.0
+1600.0  1700.0  2200.0  2500.0  3000.0  3200.0
+1600.0  1700.0  2200.0  2500.0  2900.0  3200.0
+1600.0  1800.0  2300.0  2400.0  2900.0  3200.0
+1600.0  1800.0  2200.0  2400.0  2900.0  3200.0
+1700.0  1900.0  2400.0  2700.0  3000.0  3300.0
+1600.0  1800.0  2400.0  2700.0  3000.0  3300.0
+1600.0  1800.0  2300.0  2600.0  2900.0  3200.0
+1600.0  1800.0  2500.0  2700.0  2900.0  3200.0
+1600.0  1900.0  2500.0  2800.0  3100.0  3300.0
+1600.0  1900.0  2500.0  2800.0  3000.0  3200.0
+1400.0  1700.0  2400.0  2700.0  2900.0  3200.0
+1400.0  1500.0  2200.0  2600.0  2800.0  3100.0
+1300.0  1500.0  2300.0  2600.0  2800.0  3100.0
+1200.0  1400.0  2300.0  2500.0  2700.0  3100.0
+1300.0  1600.0  2200.0  2600.0  3000.0  3300.0
+1200.0  1600.0  2500.0  2700.0  3100.0  3400.0
+1300.0  1800.0  2400.0  2700.0  3200.0  3400.0
+1300.0  1700.0  2300.0  2700.0  3100.0  3300.0
+1300.0  1700.0  2200.0  2500.0  3100.0  3300.0
+1300.0  1600.0  2200.0  2600.0  2900.0  3200.0
+1400.0  1600.0  2200.0  2700.0  2800.0  3100.0
+1600.0  1700.0  2200.0  2700.0  3100.0  3200.0
+1800.0  2000.0  2400.0  2800.0  3100.0  3300.0
+1800.0  2000.0  2400.0  2800.0  3200.0  3300.0
+1700.0  1800.0  2200.0  2700.0  2900.0  3100.0
+1700.0  1800.0  2300.0  2700.0  3000.0  3300.0
+1800.0  1900.0  2600.0  2800.0  3300.0  3400.0
+1900.0  2100.0  2300.0  2600.0  2900.0  3100.0
+1900.0  2200.0  2400.0  2700.0  3000.0  3100.0
+1800.0  2300.0  2400.0  2700.0  3000.0  3100.0
+1800.0  2300.0  2400.0  2600.0  3100.0  3200.0
+2000.0  2300.0  2400.0  2700.0  3100.0  3200.0
+2100.0  2300.0  2500.0  2700.0  3000.0  3200.0
+2000.0  2100.0  2500.0  2700.0  3000.0  3200.0
+1900.0  2000.0  2300.0  2700.0  2900.0  3100.0
+1600.0  1800.0  2200.0  2500.0  2700.0  3000.0
+1500.0  1800.0  2300.0  2500.0  2700.0  3000.0
+1500.0  1800.0  2200.0  2500.0  2700.0  3000.0
+1600.0  1800.0  2300.0  2500.0  2800.0  3000.0
+1700.0  1800.0  2400.0  2700.0  3000.0  3200.0
+1700.0  1800.0  2500.0  2700.0  3000.0  3200.0
+1700.0  1800.0  2400.0  2700.0  3000.0  3300.0
+1600.0  1700.0  2400.0  2600.0  2900.0  3200.0
+1500.0  1700.0  2400.0  2600.0  2800.0  3200.0
+1500.0  1700.0  2400.0  2500.0  2800.0  3200.0
+1400.0  1600.0  2400.0  2500.0  3000.0  3300.0
+1500.0  1700.0  2300.0  2400.0  2900.0  3200.0
+1500.0  1800.0  2200.0  2400.0  2800.0  3000.0
+1600.0  1900.0  2200.0  2600.0  2900.0  3100.0
+1800.0  2000.0  2300.0  2600.0  2900.0  3000.0
+1600.0  2000.0  2300.0  2500.0  2900.0  3100.0
+1600.0  1800.0  2100.0  2300.0  2900.0  3100.0
+1300.0  1500.0  2200.0  2400.0  3000.0  3200.0
+1300.0  1500.0  2200.0  2400.0  2900.0  3200.0
+1300.0  1500.0  2200.0  2500.0  2900.0  3200.0
+1400.0  1500.0  2300.0  2500.0  2900.0  3200.0
+1600.0  1700.0  2100.0  2500.0  2800.0  3100.0
+1600.0  1700.0  2100.0  2600.0  2800.0  3100.0
+1700.0  1800.0  2100.0  2500.0  2800.0  3100.0
+1700.0  1800.0  2200.0  2600.0  2900.0  3100.0
+1700.0  1900.0  2300.0  2600.0  2900.0  3200.0
+1800.0  2100.0  2300.0  2600.0  2900.0  3200.0
+1800.0  2100.0  2300.0  2700.0  2900.0  3200.0
+1900.0  2200.0  2400.0  2700.0  2900.0  3200.0
+1900.0  2100.0  2300.0  2700.0  2900.0  3100.0
+1900.0  2000.0  2300.0  2600.0  2800.0  3100.0
+1900.0  2200.0  2500.0  2800.0  3100.0  3300.0
+1900.0  2200.0  2400.0  2800.0  3000.0  3200.0
+1900.0  2200.0  2400.0  2700.0  2900.0  3100.0
+1900.0  2300.0  2400.0  2800.0  3100.0  3200.0
+2000.0  2300.0  2500.0  2800.0  3100.0  3300.0
+1900.0  2400.0  2500.0  2800.0  3100.0  3200.0
+1800.0  2000.0  2200.0  2500.0  3000.0  3200.0
+1800.0  1900.0  2100.0  2400.0  2900.0  3200.0
+1500.0  1600.0  2200.0  2400.0  2700.0  3200.0
+1300.0  1400.0  2200.0  2500.0  2700.0  3200.0
+1200.0  1500.0  2500.0  2700.0  3000.0  3300.0
+1300.0  1600.0  2400.0  2600.0  3000.0  3300.0
+2000.0  2200.0  2600.0  2700.0  3000.0  3300.0
+2100.0  2300.0  2500.0  2700.0  3000.0  3300.0
+2100.0  2300.0  2600.0  2700.0  3000.0  3300.0
+2000.0  2200.0  2600.0  2700.0  3000.0  3200.0
+1800.0  2300.0  2500.0  2600.0  2900.0  3200.0
+1800.0  2300.0  2500.0  2700.0  2900.0  3100.0
+1800.0  2200.0  2400.0  2600.0  2900.0  3200.0
+1800.0  2200.0  2400.0  2600.0  2800.0  3100.0
+1800.0  2200.0  2300.0  2600.0  2900.0  3100.0
+1800.0  2000.0  2200.0  2800.0  3000.0  3200.0
+1800.0  1900.0  2200.0  2800.0  3000.0  3200.0
+1700.0  1900.0  2300.0  2800.0  3000.0  3300.0
+1600.0  1800.0  2300.0  2800.0  3000.0  3300.0
+1400.0  1700.0  2200.0  2500.0  2800.0  2900.0
+1400.0  1700.0  2100.0  2500.0  2900.0  3200.0
+1700.0  2000.0  2200.0  2800.0  3200.0  3300.0
+1800.0  1900.0  2200.0  2700.0  2900.0  3200.0
+1800.0  2000.0  2200.0  2700.0  2900.0  3100.0
+1800.0  2000.0  2200.0  2700.0  2800.0  3000.0
+1800.0  2000.0  2200.0  2700.0  2800.0  3100.0
+1600.0  1900.0  2100.0  2600.0  2900.0  3200.0
+2000.0  2100.0  2600.0  2900.0  3000.0  3200.0
+2000.0  2200.0  2700.0  2900.0  3100.0  3300.0
+2000.0  2200.0  2400.0  2800.0  3000.0  3200.0
+2000.0  2200.0  2300.0  2700.0  3000.0  3200.0
+1700.0  2200.0  2400.0  2600.0  2900.0  3100.0
+1800.0  2200.0  2400.0  2700.0  3000.0  3200.0
+1900.0  2300.0  2500.0  2700.0  3000.0  3200.0
+1900.0  2300.0  2500.0  2700.0  2900.0  3100.0
+1900.0  2300.0  2500.0  2800.0  3000.0  3200.0
+1900.0  2300.0  2500.0  2700.0  2900.0  3200.0
+1800.0  2200.0  2400.0  2700.0  2900.0  3100.0
+1800.0  2000.0  2300.0  2700.0  3000.0  3200.0
+1600.0  1700.0  2100.0  2800.0  3100.0  3200.0
+1400.0  1800.0  2200.0  2500.0  3000.0  3100.0
+1400.0  1800.0  2300.0  2500.0  3000.0  3100.0
+1400.0  1800.0  2300.0  2500.0  2900.0  3100.0
+1600.0  1800.0  2500.0  2800.0  3100.0  3200.0
+1700.0  2000.0  2400.0  2700.0  3200.0  3400.0
+1700.0  2000.0  2500.0  2800.0  3100.0  3400.0
+1500.0  1700.0  2300.0  2600.0  2900.0  3200.0
+1500.0  1700.0  2200.0  2600.0  2800.0  3200.0
+1500.0  1700.0  2200.0  2600.0  2900.0  3300.0
+1400.0  1700.0  2200.0  2600.0  2900.0  3300.0
+1200.0  1500.0  2200.0  2300.0  3100.0  3400.0
+1200.0  1600.0  2300.0  2400.0  3200.0  3300.0
+1200.0  1700.0  2300.0  2400.0  3100.0  3300.0
+1100.0  1700.0  2400.0  2500.0  3100.0  3300.0
+1100.0  1800.0  2500.0  2600.0  3100.0  3300.0
+1100.0  1800.0  2500.0  2600.0  3200.0  3300.0
+1000.0  1800.0  2500.0  2600.0  3200.0  3300.0
+1000.0  1700.0  2400.0  2500.0  3200.0  3300.0
+1100.0  1600.0  2400.0  2500.0  3200.0  3300.0
+1100.0  1600.0  2300.0  2400.0  3200.0  3300.0
+1300.0  1600.0  2300.0  2500.0  3100.0  3300.0
+1400.0  1700.0  2300.0  2500.0  3100.0  3300.0
+2000.0  2100.0  2500.0  2600.0  3200.0  3400.0
+1700.0  2100.0  2600.0  2800.0  3100.0  3200.0
+1800.0  2200.0  2700.0  2900.0  3100.0  3300.0
+2100.0  2400.0  2700.0  2900.0  3200.0  3300.0
+2100.0  2500.0  2700.0  2900.0  3300.0  3400.0
+2100.0  2400.0  2600.0  2800.0  3200.0  3400.0
+1700.0  1900.0  2400.0  2600.0  2900.0  3000.0
+1600.0  1900.0  2400.0  2500.0  2800.0  2900.0
+1300.0  2000.0  2400.0  2500.0  2900.0  3200.0
+1500.0  2000.0  2400.0  2500.0  2900.0  3100.0
+1600.0  2000.0  2400.0  2600.0  3000.0  3100.0
+1700.0  1900.0  2500.0  2600.0  3100.0  3200.0
+1600.0  1800.0  2600.0  2700.0  3300.0  3400.0
+1500.0  1600.0  2600.0  2700.0  3200.0  3400.0
+1500.0  1700.0  2600.0  2700.0  3200.0  3400.0
+1500.0  2100.0  2600.0  2800.0  3300.0  3400.0
+1700.0  2200.0  2700.0  2900.0  3300.0  3400.0
+1700.0  2300.0  2700.0  2800.0  3300.0  3400.0
+1800.0  2300.0  2700.0  2800.0  3300.0  3400.0
+1400.0  1700.0  2500.0  2600.0  3000.0  3300.0
+1400.0  1800.0  2500.0  2600.0  3000.0  3300.0
+1800.0  2200.0  2700.0  2900.0  3300.0  3400.0
+1800.0  2300.0  2600.0  2900.0  3300.0  3400.0
+1400.0  1900.0  2500.0  2600.0  3200.0  3400.0
+1400.0  2000.0  2400.0  2500.0  3200.0  3300.0
+1400.0  2100.0  2400.0  2600.0  3200.0  3300.0
+1200.0  2000.0  2400.0  2700.0  3200.0  3300.0
+1300.0  1900.0  2300.0  2600.0  3100.0  3200.0
+1300.0  1800.0  2300.0  2500.0  3100.0  3200.0
+1200.0  1700.0  2300.0  2500.0  3000.0  3100.0
+1200.0  1800.0  2400.0  2500.0  3000.0  3100.0
+1100.0  2100.0  2300.0  2600.0  3000.0  3100.0
+1400.0  1800.0  2200.0  2700.0  3100.0  3200.0
+1600.0  2000.0  2400.0  2600.0  3200.0  3300.0
+1600.0  1900.0  2400.0  2600.0  3300.0  3400.0
+1600.0  2000.0  2500.0  2600.0  3300.0  3400.0
+1600.0  2000.0  2300.0  2500.0  3300.0  3400.0
+1500.0  2400.0  2700.0  2800.0  3100.0  3300.0
+1300.0  2000.0  2500.0  2600.0  3200.0  3300.0
+1400.0  2000.0  2500.0  2600.0  3200.0  3300.0
+1600.0  1900.0  2400.0  2600.0  3200.0  3300.0
+1600.0  2000.0  2300.0  2600.0  3200.0  3300.0
+1600.0  2100.0  2300.0  2500.0  3000.0  3100.0
+1800.0  2100.0  2400.0  2700.0  2900.0  3200.0
+1500.0  1700.0  2000.0  2600.0  3200.0  3300.0
+1400.0  1700.0  2000.0  2400.0  3200.0  3300.0
+1400.0  1900.0  2200.0  2500.0  3100.0  3300.0
+1500.0  1900.0  2200.0  2500.0  3100.0  3300.0
+1200.0  1900.0  2500.0  2600.0  3100.0  3300.0
+1000.0  1700.0  2600.0  2800.0  3300.0  3400.0
+1200.0  1500.0  2400.0  2700.0  2900.0  3200.0
+1700.0  2100.0  2400.0  2800.0  3200.0  3400.0
+1700.0  2000.0  2600.0  2800.0  3100.0  3400.0
+1700.0  2000.0  2600.0  2700.0  3000.0  3300.0
+1500.0  1700.0  2500.0  2700.0  3000.0  3300.0
+1600.0  2000.0  2600.0  2800.0  3100.0  3300.0
+1500.0  2000.0  2500.0  2800.0  3200.0  3400.0
+1400.0  1800.0  2500.0  2800.0  3300.0  3400.0
+1700.0  2200.0  2600.0  2900.0  3200.0  3400.0
+1700.0  2200.0  2600.0  2800.0  3200.0  3400.0
+1800.0  2000.0  2500.0  2600.0  3300.0  3400.0
+1500.0  1800.0  2200.0  2500.0  3100.0  3200.0
+1600.0  2100.0  2400.0  2700.0  3300.0  3400.0
+1400.0  1800.0  2500.0  2700.0  3000.0  3300.0
+1300.0  1600.0  2500.0  2600.0  3200.0  3400.0
+1400.0  1700.0  2500.0  2600.0  3300.0  3400.0
+1500.0  1700.0  2400.0  2500.0  3200.0  3400.0
+1900.0  2000.0  2300.0  2500.0  3200.0  3400.0
+1600.0  1900.0  2100.0  2500.0  3000.0  3200.0
+1600.0  2100.0  2500.0  2800.0  3200.0  3300.0
+1400.0  2000.0  2400.0  2700.0  3200.0  3300.0
+900.0  1800.0  2400.0  2600.0  3200.0  3300.0
+1100.0  1600.0  2700.0  2800.0  3200.0  3400.0
+1200.0  1600.0  2600.0  2800.0  3200.0  3400.0
+1300.0  1700.0  2500.0  2700.0  3100.0  3300.0
+1400.0  1700.0  2400.0  2700.0  3200.0  3300.0
+1400.0  1800.0  2300.0  2500.0  3100.0  3200.0
+1400.0  2100.0  2400.0  2600.0  2900.0  3100.0
+1300.0  2000.0  2400.0  2600.0  3100.0  3200.0
+1200.0  1800.0  2300.0  2500.0  3200.0  3300.0
+1300.0  1900.0  2300.0  2500.0  3100.0  3300.0
+1600.0  2000.0  2400.0  2600.0  3200.0  3400.0
+1800.0  2000.0  2300.0  2500.0  3100.0  3400.0
+1700.0  1900.0  2300.0  2400.0  3100.0  3300.0
+1600.0  1800.0  2300.0  2400.0  2900.0  3300.0
+1600.0  1800.0  2300.0  2400.0  3000.0  3300.0
+1600.0  1700.0  2300.0  2400.0  3000.0  3300.0
+1600.0  1700.0  2300.0  2400.0  2800.0  3200.0
+1600.0  1700.0  2300.0  2400.0  2900.0  3300.0
+1500.0  1700.0  2300.0  2500.0  3000.0  3300.0
+1400.0  1700.0  2500.0  2600.0  3200.0  3300.0
+1300.0  1600.0  2500.0  2700.0  3100.0  3300.0
+1300.0  1500.0  2500.0  2700.0  3100.0  3300.0
+1300.0  1600.0  2400.0  2700.0  3000.0  3400.0
+1800.0  2300.0  2600.0  2800.0  3100.0  3300.0
+1800.0  2200.0  2500.0  2800.0  3100.0  3300.0
+1700.0  2100.0  2500.0  2700.0  3000.0  3300.0
+1600.0  1900.0  2500.0  2700.0  2900.0  3200.0
+1700.0  2000.0  2500.0  2700.0  3000.0  3200.0
+1700.0  2300.0  2600.0  2700.0  3200.0  3400.0
+1400.0  1700.0  1900.0  2200.0  3200.0  3300.0
+1200.0  1900.0  2100.0  2600.0  3100.0  3200.0
+1200.0  1900.0  2200.0  2700.0  3100.0  3200.0
+1200.0  1900.0  2300.0  2700.0  3200.0  3300.0
+1100.0  2000.0  2300.0  2600.0  3200.0  3300.0
+1200.0  1900.0  2400.0  2700.0  3200.0  3300.0
+1200.0  1800.0  2300.0  2600.0  3200.0  3400.0
+1200.0  1600.0  2400.0  2700.0  3200.0  3400.0
+1200.0  1500.0  2400.0  2600.0  3000.0  3200.0
+1300.0  1500.0  2100.0  2500.0  2700.0  3000.0
+1200.0  1800.0  2400.0  2600.0  3100.0  3200.0
+1200.0  2000.0  2400.0  2500.0  3200.0  3300.0
+1700.0  2400.0  2700.0  3100.0  3300.0  3400.0
+2000.0  2500.0  2700.0  3100.0  3400.0  3500.0
+1900.0  2400.0  2700.0  3100.0  3400.0  3500.0
+1900.0  2200.0  2700.0  3100.0  3300.0  3400.0
+1800.0  2200.0  2700.0  3100.0  3300.0  3400.0
+1500.0  1700.0  2100.0  2500.0  3200.0  3300.0
+1400.0  1800.0  2100.0  2600.0  3200.0  3300.0
+1200.0  1700.0  2000.0  2300.0  3300.0  3400.0
+1300.0  1500.0  1600.0  2300.0  3100.0  3200.0
+1500.0  1900.0  2400.0  2600.0  3000.0  3300.0
+1500.0  2000.0  2400.0  2500.0  2800.0  3200.0
+1400.0  2000.0  2400.0  2500.0  2900.0  3200.0
+1300.0  1600.0  1700.0  2300.0  3300.0  3400.0
+1300.0  1600.0  1700.0  2100.0  3200.0  3400.0
+2000.0  2200.0  2500.0  2900.0  3300.0  3400.0
+2100.0  2300.0  2500.0  2700.0  3300.0  3400.0
+1900.0  2200.0  2400.0  2700.0  3300.0  3400.0
+1500.0  1900.0  2200.0  2400.0  3000.0  3300.0
+1500.0  1900.0  2400.0  2700.0  3300.0  3400.0
+1500.0  1700.0  2500.0  2700.0  3200.0  3400.0
+1500.0  1700.0  2500.0  2600.0  3100.0  3400.0
+1600.0  2000.0  2400.0  2700.0  3200.0  3300.0
+1600.0  1800.0  2200.0  2600.0  3000.0  3100.0
+1500.0  1800.0  2200.0  2600.0  3000.0  3100.0
+1500.0  1900.0  2400.0  2500.0  3000.0  3200.0
+1200.0  1500.0  2400.0  2600.0  3200.0  3300.0
+1500.0  2000.0  2500.0  2700.0  3100.0  3300.0
+1700.0  2100.0  2500.0  2900.0  3200.0  3300.0
+1400.0  1800.0  2400.0  2500.0  3100.0  3300.0
+1400.0  2000.0  2300.0  2500.0  3200.0  3400.0
+1200.0  1900.0  2200.0  2400.0  3300.0  3400.0
+1200.0  1900.0  2300.0  2500.0  3300.0  3400.0
+1200.0  1900.0  2300.0  2400.0  3300.0  3400.0
+1200.0  1700.0  2300.0  2400.0  3300.0  3400.0
+1200.0  1600.0  2200.0  2300.0  3300.0  3400.0
+1200.0  1600.0  2200.0  2400.0  3300.0  3400.0
+1300.0  1600.0  2100.0  2400.0  3200.0  3300.0
+1500.0  1700.0  2200.0  2600.0  2900.0  3200.0
+2100.0  2200.0  2500.0  2800.0  3200.0  3300.0
+1600.0  1800.0  2300.0  2500.0  3100.0  3300.0
+1500.0  1800.0  2300.0  2500.0  3100.0  3300.0
+1400.0  1800.0  2300.0  2600.0  3100.0  3300.0
+1400.0  1800.0  2400.0  2600.0  3100.0  3300.0
+1300.0  1800.0  2400.0  2700.0  3200.0  3300.0
+1100.0  1800.0  2400.0  2700.0  3200.0  3300.0
+1400.0  2000.0  2500.0  2600.0  2900.0  3200.0
+1500.0  2100.0  2500.0  2600.0  2900.0  3200.0
+1500.0  1900.0  2400.0  2600.0  3100.0  3300.0
+1300.0  1900.0  2400.0  2800.0  3100.0  3300.0
+1300.0  2000.0  2500.0  2700.0  3200.0  3300.0
+1300.0  1800.0  2600.0  2700.0  3100.0  3400.0
+1300.0  1700.0  2600.0  2700.0  3100.0  3300.0
+1300.0  1700.0  2600.0  2700.0  3100.0  3400.0
+1400.0  1900.0  2400.0  2600.0  2900.0  3100.0
+1500.0  1800.0  2300.0  2600.0  2900.0  3100.0
+1600.0  1900.0  2400.0  2600.0  3000.0  3200.0
+1700.0  2000.0  2600.0  2900.0  3100.0  3300.0
+1800.0  2300.0  2500.0  2800.0  3200.0  3400.0
+1900.0  2300.0  2600.0  2900.0  3300.0  3400.0
+1600.0  1900.0  2500.0  2600.0  3000.0  3100.0
+1600.0  1900.0  2500.0  2600.0  3000.0  3200.0
+1500.0  1800.0  2200.0  2500.0  3200.0  3300.0
+1500.0  1900.0  2200.0  2500.0  3300.0  3400.0
+1500.0  1800.0  2200.0  2400.0  3200.0  3400.0
+1500.0  1800.0  2100.0  2400.0  3200.0  3400.0
+1600.0  1800.0  2100.0  2200.0  3200.0  3400.0
+1700.0  1800.0  2100.0  2400.0  3100.0  3300.0
+1600.0  1700.0  2300.0  2400.0  2700.0  3100.0
+1600.0  1900.0  2400.0  2500.0  3000.0  3300.0
+1600.0  2100.0  2500.0  2600.0  3200.0  3400.0
+1200.0  2000.0  2400.0  2500.0  3400.0  3500.0
+1200.0  1600.0  2300.0  2400.0  3200.0  3400.0
+1400.0  1900.0  2400.0  2500.0  3000.0  3200.0
+1300.0  1800.0  2100.0  2500.0  3100.0  3300.0
+1300.0  1700.0  2300.0  2500.0  3100.0  3300.0
+1300.0  1700.0  2200.0  2400.0  3200.0  3300.0
+1300.0  1800.0  2200.0  2400.0  3200.0  3300.0
+1500.0  1800.0  2300.0  2500.0  3200.0  3300.0
+1600.0  1800.0  2300.0  2500.0  3300.0  3400.0
+1700.0  1900.0  2400.0  2600.0  3300.0  3400.0
+1700.0  1900.0  2500.0  2700.0  3000.0  3100.0
+1700.0  1800.0  2500.0  2600.0  3100.0  3200.0
+1700.0  1800.0  2500.0  2600.0  3000.0  3200.0
+1600.0  1800.0  2400.0  2600.0  3000.0  3200.0
+1600.0  1800.0  2400.0  2600.0  3100.0  3300.0
+1500.0  1700.0  2400.0  2600.0  3100.0  3300.0
+1300.0  1700.0  2400.0  2600.0  3100.0  3300.0
+1300.0  1700.0  2400.0  2600.0  3200.0  3300.0
+1400.0  1800.0  2400.0  2600.0  3200.0  3300.0
+1400.0  1800.0  2300.0  2600.0  3200.0  3300.0
+1500.0  1800.0  2300.0  2600.0  3300.0  3400.0
+1500.0  1800.0  2300.0  2500.0  3300.0  3400.0
+1500.0  1700.0  2200.0  2400.0  3300.0  3400.0
+1800.0  2200.0  2400.0  2600.0  3200.0  3300.0
+1700.0  1900.0  2300.0  2700.0  3200.0  3300.0
+1600.0  1800.0  2000.0  2600.0  3200.0  3300.0
+1900.0  2000.0  2200.0  2500.0  3300.0  3400.0
+1900.0  2100.0  2300.0  2600.0  3300.0  3400.0
+1800.0  1900.0  2200.0  2600.0  3100.0  3300.0
+1100.0  1900.0  2600.0  2700.0  3200.0  3300.0
+1000.0  1700.0  2700.0  2800.0  3200.0  3300.0
+1000.0  1800.0  2600.0  2700.0  3000.0  3100.0
+1200.0  2000.0  2600.0  2800.0  3200.0  3300.0
+1200.0  2000.0  2500.0  2700.0  3200.0  3300.0
+1200.0  2000.0  2500.0  2600.0  3200.0  3300.0
+1200.0  2000.0  2400.0  2500.0  3300.0  3400.0
+1300.0  2000.0  2300.0  2500.0  3300.0  3400.0
+1300.0  1900.0  2300.0  2500.0  3300.0  3400.0
+1400.0  1900.0  2300.0  2600.0  3300.0  3400.0
+2200.0  2400.0  2500.0  2900.0  3200.0  3300.0
+2100.0  2200.0  2400.0  2800.0  3200.0  3300.0
+2000.0  2200.0  2400.0  2800.0  3200.0  3300.0
+1900.0  2100.0  2400.0  2800.0  3200.0  3300.0
+1600.0  1800.0  2000.0  2400.0  2800.0  3000.0
+1600.0  1900.0  2300.0  2400.0  2900.0  3300.0
+1800.0  2100.0  2400.0  2500.0  3100.0  3200.0
+1800.0  2300.0  2500.0  2700.0  3200.0  3300.0
+1800.0  2100.0  2500.0  2700.0  3300.0  3400.0
+1500.0  1900.0  2100.0  2700.0  3000.0  3100.0
+1500.0  1700.0  1800.0  2600.0  3300.0  3400.0
+1500.0  1700.0  1800.0  2500.0  3300.0  3400.0
+1300.0  1500.0  1600.0  2500.0  3200.0  3300.0
+1300.0  1500.0  1700.0  2400.0  3000.0  3100.0
+1600.0  2000.0  2500.0  2700.0  3300.0  3400.0
+2000.0  2100.0  2400.0  2700.0  3300.0  3400.0
+1800.0  2000.0  2200.0  2600.0  3100.0  3300.0
+1800.0  1900.0  2100.0  2600.0  3200.0  3300.0
+1700.0  2000.0  2100.0  2700.0  3200.0  3300.0
+1700.0  2100.0  2200.0  2700.0  3200.0  3300.0
+1700.0  2200.0  2400.0  2700.0  3200.0  3300.0
+1700.0  2200.0  2400.0  2600.0  3200.0  3300.0
+1700.0  2100.0  2500.0  2600.0  3200.0  3300.0
+1800.0  2400.0  2600.0  3000.0  3300.0  3400.0
+1800.0  2400.0  2800.0  3100.0  3300.0  3400.0
+1900.0  2400.0  2800.0  3100.0  3300.0  3500.0
+1900.0  2300.0  2800.0  3000.0  3300.0  3400.0
+1600.0  1800.0  2400.0  2600.0  3000.0  3100.0
+1500.0  1700.0  1900.0  2500.0  3300.0  3400.0
+1200.0  1700.0  2200.0  2300.0  3100.0  3300.0
+1100.0  1500.0  2300.0  2400.0  3000.0  3300.0
+1200.0  1600.0  2300.0  2400.0  3100.0  3300.0
+1200.0  1600.0  2300.0  2400.0  3100.0  3400.0
+1300.0  1600.0  2200.0  2400.0  3200.0  3300.0
+1500.0  1600.0  2100.0  2400.0  3000.0  3300.0
+1600.0  1700.0  2100.0  2400.0  3100.0  3300.0
+1500.0  1600.0  2100.0  2500.0  3100.0  3300.0
+1600.0  1900.0  2200.0  2600.0  3100.0  3300.0
+1500.0  1800.0  2200.0  2500.0  3000.0  3200.0
+1400.0  1800.0  2200.0  2500.0  2900.0  3200.0
+1300.0  1600.0  2200.0  2600.0  3000.0  3200.0
+1700.0  2000.0  2400.0  2800.0  3000.0  3100.0
+1700.0  2100.0  2400.0  2700.0  3000.0  3100.0
+1800.0  2200.0  2500.0  2800.0  3000.0  3200.0
+1700.0  2100.0  2500.0  2800.0  3100.0  3200.0
+1800.0  2200.0  2500.0  2700.0  3200.0  3400.0
+1600.0  1900.0  2300.0  2500.0  3200.0  3300.0
+1600.0  1800.0  2100.0  2500.0  3200.0  3300.0
+1600.0  1800.0  2000.0  2400.0  3200.0  3300.0
+1500.0  1700.0  1900.0  2300.0  3300.0  3400.0
+1400.0  1600.0  1800.0  2200.0  3300.0  3400.0
+1500.0  1600.0  1900.0  2600.0  3000.0  3200.0
+1500.0  2000.0  2300.0  2600.0  3200.0  3300.0
+1200.0  1900.0  2100.0  2500.0  3200.0  3300.0
+1900.0  2100.0  2300.0  2600.0  3200.0  3300.0
+1800.0  2100.0  2300.0  2600.0  3300.0  3400.0
+1700.0  2100.0  2300.0  2600.0  3200.0  3300.0
+1600.0  2100.0  2300.0  2700.0  3200.0  3300.0
+1500.0  1900.0  2400.0  2700.0  3200.0  3300.0
+1400.0  1900.0  2400.0  2700.0  3200.0  3300.0
+1400.0  1900.0  2400.0  2600.0  3200.0  3300.0
+1500.0  2100.0  2500.0  2600.0  3200.0  3300.0
+1600.0  1800.0  2100.0  2500.0  2900.0  3100.0
+1800.0  2000.0  2500.0  2800.0  3000.0  3200.0
+1400.0  1600.0  2100.0  2600.0  3000.0  3300.0
+1700.0  2000.0  2400.0  2700.0  3300.0  3400.0
+1700.0  2100.0  2500.0  2700.0  3300.0  3400.0
+1700.0  2100.0  2600.0  2700.0  3000.0  3300.0
+1800.0  2100.0  2500.0  2700.0  3100.0  3200.0
+2200.0  2300.0  2500.0  2800.0  3200.0  3300.0
+2100.0  2300.0  2500.0  2800.0  3200.0  3300.0
+2000.0  2200.0  2500.0  2800.0  3200.0  3300.0
+1900.0  2000.0  2400.0  2700.0  3100.0  3200.0
+1600.0  2000.0  2400.0  2700.0  3100.0  3400.0
+1300.0  1800.0  2100.0  2500.0  3100.0  3200.0
+1300.0  1800.0  2200.0  2800.0  3100.0  3200.0
+1300.0  2000.0  2200.0  2600.0  3200.0  3300.0
+1900.0  2100.0  2400.0  2500.0  3000.0  3200.0
+1800.0  2100.0  2400.0  2600.0  3200.0  3300.0
+1500.0  1900.0  2400.0  2600.0  3300.0  3400.0
+1500.0  1800.0  2400.0  2600.0  3200.0  3400.0
+1500.0  1700.0  2400.0  2600.0  3200.0  3400.0
+1400.0  1700.0  2400.0  2600.0  3100.0  3300.0
+1400.0  1900.0  2500.0  2600.0  2900.0  3200.0
+1400.0  1900.0  2400.0  2700.0  3000.0  3200.0
+1400.0  1900.0  2400.0  2600.0  3000.0  3100.0
+1400.0  1900.0  2300.0  2500.0  2700.0  3000.0
+1300.0  1800.0  2200.0  2500.0  3300.0  3400.0
+1300.0  1800.0  2200.0  2400.0  3300.0  3400.0
+1300.0  1700.0  2100.0  2400.0  3200.0  3400.0
+1400.0  1900.0  2300.0  2600.0  3100.0  3300.0
+1900.0  2200.0  2400.0  2800.0  3100.0  3200.0
+1600.0  2200.0  2400.0  2700.0  3300.0  3400.0
+1600.0  2100.0  2400.0  2700.0  3200.0  3300.0
+1400.0  1700.0  2000.0  2500.0  3000.0  3200.0
+1400.0  1800.0  2300.0  2500.0  3000.0  3200.0
+1700.0  1900.0  2100.0  2400.0  3200.0  3300.0
+1800.0  1900.0  2200.0  2500.0  3200.0  3300.0
+1900.0  2000.0  2500.0  2700.0  3200.0  3300.0
+1900.0  2000.0  2500.0  2600.0  3100.0  3300.0
+1400.0  1900.0  2300.0  2500.0  2800.0  3200.0
+1400.0  1900.0  2300.0  2500.0  2900.0  3300.0
+1400.0  1600.0  2300.0  2500.0  3000.0  3200.0
+1400.0  1600.0  2200.0  2500.0  3100.0  3200.0
+2000.0  2200.0  2500.0  2700.0  3000.0  3300.0
+1600.0  2100.0  2600.0  2900.0  3200.0  3300.0
+1500.0  1700.0  2100.0  2500.0  3100.0  3200.0
+1200.0  2100.0  2600.0  2700.0  3200.0  3300.0
+1100.0  2100.0  2600.0  2800.0  3200.0  3300.0
+1000.0  2000.0  2800.0  2900.0  3100.0  3200.0
+1600.0  1900.0  2100.0  2500.0  3000.0  3100.0
+1700.0  1900.0  2200.0  2500.0  3000.0  3100.0
+1700.0  1900.0  2300.0  2400.0  3100.0  3200.0
+1400.0  2000.0  2300.0  2400.0  3200.0  3300.0
+1300.0  2000.0  2200.0  2400.0  3100.0  3200.0
+1200.0  2000.0  2300.0  2500.0  3100.0  3200.0
+1200.0  1800.0  2300.0  2600.0  3100.0  3200.0
+1300.0  1600.0  2300.0  2700.0  3100.0  3200.0
+1300.0  1700.0  2300.0  2700.0  3100.0  3200.0
+1100.0  2000.0  2300.0  2600.0  3100.0  3200.0
+1300.0  2000.0  2400.0  2500.0  3200.0  3300.0
+1300.0  1900.0  2400.0  2500.0  3200.0  3300.0
+1500.0  1800.0  2100.0  2600.0  3300.0  3400.0
+1500.0  1900.0  2100.0  2500.0  2800.0  3000.0
+1500.0  2000.0  2200.0  2500.0  3000.0  3100.0
+1500.0  2000.0  2200.0  2600.0  3100.0  3200.0
+1600.0  1900.0  2300.0  2500.0  3100.0  3200.0
+1600.0  1900.0  2200.0  2400.0  3100.0  3200.0
+1600.0  1900.0  2400.0  2600.0  2900.0  3100.0
+1900.0  2300.0  2600.0  2800.0  3100.0  3200.0
+2000.0  2400.0  2700.0  2800.0  3100.0  3200.0
+1300.0  1800.0  2000.0  2400.0  3100.0  3200.0
+1100.0  1700.0  2100.0  2400.0  3100.0  3200.0
+1300.0  1600.0  2100.0  2500.0  3000.0  3100.0
+1200.0  1700.0  2200.0  2500.0  3000.0  3200.0
+1400.0  1800.0  2100.0  2300.0  3100.0  3200.0
+1700.0  1800.0  2100.0  2200.0  3200.0  3300.0
+1700.0  1900.0  2100.0  2300.0  3200.0  3300.0
+1800.0  1900.0  2400.0  2800.0  3100.0  3200.0
+2000.0  2300.0  2800.0  3000.0  3100.0  3300.0
+2100.0  2300.0  2700.0  3000.0  3200.0  3300.0
+2100.0  2300.0  2600.0  2900.0  3200.0  3300.0
+2200.0  2400.0  2700.0  2800.0  3200.0  3300.0
+1700.0  2000.0  2300.0  2500.0  3000.0  3100.0
+1600.0  2000.0  2300.0  2400.0  2800.0  3200.0
+1700.0  2100.0  2300.0  2400.0  2900.0  3200.0
+1400.0  1800.0  2300.0  2600.0  3000.0  3300.0
+1500.0  2200.0  2400.0  2700.0  3100.0  3200.0
+1500.0  2200.0  2500.0  2700.0  3200.0  3300.0
+1400.0  1600.0  2400.0  2500.0  3100.0  3400.0
+1600.0  2200.0  2500.0  2800.0  3300.0  3400.0
+1600.0  2000.0  2500.0  2800.0  3300.0  3400.0
+1400.0  1700.0  2400.0  2500.0  3200.0  3400.0
+1400.0  1600.0  2400.0  2600.0  3200.0  3300.0
+1400.0  1700.0  2300.0  2500.0  3200.0  3300.0
+1500.0  2000.0  2300.0  2400.0  2800.0  3200.0
+1500.0  2000.0  2300.0  2400.0  2700.0  3200.0
+1400.0  1900.0  2300.0  2500.0  3000.0  3300.0
+1200.0  1400.0  2300.0  2600.0  2900.0  3100.0
+1500.0  2000.0  2300.0  2500.0  3000.0  3200.0
+1800.0  2000.0  2500.0  2600.0  3100.0  3200.0
+1500.0  1800.0  2400.0  2600.0  3000.0  3200.0
+1200.0  1500.0  2200.0  2400.0  3000.0  3100.0
+1500.0  1900.0  2400.0  2600.0  3200.0  3300.0
+1700.0  2000.0  2600.0  2800.0  3200.0  3300.0
+1500.0  1900.0  2100.0  2500.0  3200.0  3300.0
+1700.0  1800.0  2000.0  2300.0  3000.0  3100.0
+1600.0  1900.0  2300.0  2500.0  2800.0  3100.0
+1600.0  1800.0  2300.0  2500.0  3000.0  3200.0
+1700.0  1800.0  2300.0  2500.0  3200.0  3300.0
+1700.0  1800.0  2300.0  2500.0  3100.0  3300.0
+1600.0  1700.0  2200.0  2400.0  3000.0  3300.0
+1500.0  1700.0  2300.0  2500.0  3200.0  3400.0
+1500.0  1700.0  2300.0  2400.0  2800.0  3300.0
+1600.0  1700.0  2200.0  2400.0  2600.0  3200.0
+1700.0  1800.0  2200.0  2400.0  2900.0  3300.0
+1900.0  2100.0  2400.0  2500.0  3100.0  3300.0
+1900.0  2000.0  2400.0  2500.0  3100.0  3300.0
+1900.0  2300.0  2500.0  2900.0  3200.0  3300.0
+2200.0  2400.0  2700.0  3100.0  3300.0  3400.0
+2200.0  2400.0  2800.0  3100.0  3300.0  3400.0
+1500.0  1900.0  2300.0  2400.0  3200.0  3300.0
+1500.0  1800.0  2200.0  2300.0  3100.0  3300.0
+1700.0  2000.0  2600.0  2900.0  3200.0  3400.0
+1500.0  2000.0  2300.0  2500.0  3100.0  3200.0
+1300.0  1600.0  2000.0  2500.0  3000.0  3200.0
+1800.0  2000.0  2200.0  2500.0  3000.0  3100.0
+1200.0  1800.0  2200.0  2400.0  3100.0  3200.0
+1300.0  1500.0  2100.0  2200.0  3100.0  3200.0
+1400.0  1900.0  2200.0  2300.0  3200.0  3300.0
+1900.0  2300.0  2600.0  3000.0  3200.0  3400.0
+1900.0  2300.0  2600.0  2800.0  3200.0  3300.0
+1900.0  2200.0  2600.0  2900.0  3100.0  3300.0
+1200.0  1500.0  2500.0  2600.0  3100.0  3200.0
+1400.0  1900.0  2300.0  2400.0  2600.0  3100.0
+1500.0  1600.0  2100.0  2400.0  2900.0  3200.0
+1400.0  1600.0  2200.0  2600.0  2900.0  3200.0
+1700.0  1800.0  2100.0  2300.0  3000.0  3100.0
+1700.0  1900.0  2100.0  2300.0  3100.0  3200.0
+1800.0  1900.0  2200.0  2300.0  3200.0  3300.0
+1700.0  1900.0  2200.0  2300.0  3200.0  3300.0
+1700.0  1800.0  2200.0  2300.0  3200.0  3300.0
+1600.0  1700.0  2200.0  2300.0  3100.0  3300.0
+1700.0  2100.0  2400.0  2900.0  3300.0  3400.0
+1600.0  2100.0  2500.0  2700.0  3300.0  3400.0
+1500.0  2000.0  2400.0  2600.0  3100.0  3200.0
+1600.0  2000.0  2300.0  2500.0  2800.0  3000.0
+1500.0  1700.0  1800.0  2200.0  2800.0  2900.0
+1500.0  1700.0  1900.0  2100.0  2700.0  2800.0
+1600.0  2000.0  2300.0  2500.0  3000.0  3300.0
+1900.0  2300.0  2500.0  2800.0  3100.0  3200.0
+2200.0  2400.0  2600.0  3000.0  3200.0  3300.0
+2300.0  2500.0  2800.0  3100.0  3300.0  3400.0
+1900.0  2400.0  2700.0  3000.0  3400.0  3500.0
+1900.0  2400.0  2600.0  3000.0  3400.0  3500.0
+1800.0  2300.0  2700.0  3100.0  3400.0  3500.0
+1800.0  2300.0  2700.0  3000.0  3300.0  3400.0
+1400.0  1700.0  2200.0  2500.0  3200.0  3400.0
+1600.0  1900.0  2500.0  2600.0  3100.0  3300.0
+2000.0  2300.0  2600.0  2800.0  3300.0  3400.0
+1900.0  2200.0  2500.0  2800.0  3300.0  3400.0
+1700.0  2100.0  2400.0  2700.0  3300.0  3400.0
+1600.0  1700.0  2300.0  2500.0  3200.0  3400.0
+1600.0  1700.0  2300.0  2400.0  3300.0  3400.0
+1600.0  1800.0  2400.0  2600.0  3300.0  3400.0
+1500.0  1700.0  2300.0  2700.0  3300.0  3400.0
+1400.0  1800.0  2300.0  2400.0  3100.0  3400.0
+1500.0  2000.0  2300.0  2400.0  2900.0  3200.0
+1500.0  1900.0  2300.0  2400.0  2800.0  3200.0
+1300.0  1800.0  2200.0  2500.0  3000.0  3100.0
+1200.0  1700.0  2200.0  2300.0  3200.0  3300.0
+1200.0  1700.0  2200.0  2400.0  3200.0  3300.0
+1100.0  1700.0  2200.0  2400.0  3200.0  3300.0
+1100.0  1700.0  2300.0  2500.0  3100.0  3200.0
+1100.0  1700.0  2300.0  2600.0  3100.0  3200.0
+1300.0  1800.0  2300.0  2600.0  3000.0  3200.0
+1300.0  1900.0  2300.0  2600.0  3000.0  3300.0
+1300.0  1800.0  2300.0  2600.0  3100.0  3300.0
+1400.0  2000.0  2500.0  2800.0  3200.0  3300.0
+1200.0  1600.0  2400.0  2700.0  3200.0  3300.0
+1500.0  1800.0  2300.0  2500.0  3100.0  3200.0
+1500.0  1600.0  2200.0  2600.0  3000.0  3200.0
+1500.0  1600.0  2200.0  2500.0  3000.0  3300.0
+1200.0  1600.0  2400.0  2600.0  3200.0  3400.0
+1000.0  2300.0  2800.0  2900.0  3100.0  3200.0
+900.0  1700.0  2700.0  2800.0  3200.0  3300.0
+1500.0  1700.0  2400.0  2500.0  3100.0  3200.0
+1500.0  1900.0  2400.0  2500.0  3100.0  3200.0
+1400.0  1900.0  2400.0  2500.0  2900.0  3100.0
+1600.0  2100.0  2400.0  2600.0  3000.0  3100.0
+1700.0  1900.0  2300.0  2500.0  3000.0  3100.0
+2100.0  2400.0  2600.0  2900.0  3100.0  3300.0
+2200.0  2400.0  2700.0  2900.0  3200.0  3300.0
+2100.0  2200.0  2700.0  2800.0  3100.0  3300.0
+2000.0  2100.0  2300.0  2600.0  3100.0  3300.0
+1800.0  2000.0  2100.0  2600.0  3100.0  3200.0
+1800.0  1900.0  2200.0  2500.0  2900.0  3000.0
+1800.0  1900.0  2300.0  2400.0  3000.0  3100.0
+1800.0  1900.0  2200.0  2400.0  3000.0  3100.0
+1800.0  2000.0  2200.0  2500.0  3100.0  3200.0
+1800.0  2000.0  2300.0  2800.0  3100.0  3200.0
+1800.0  2000.0  2400.0  2800.0  3100.0  3200.0
+1800.0  2000.0  2400.0  2800.0  3000.0  3100.0
+1700.0  1900.0  2300.0  2700.0  2900.0  3100.0
+1700.0  1900.0  2200.0  2700.0  2900.0  3100.0
+1600.0  1800.0  2000.0  2600.0  2800.0  3000.0
+1500.0  1700.0  2000.0  2500.0  2900.0  3100.0
+1700.0  1900.0  2200.0  2500.0  3000.0  3200.0
+1700.0  1800.0  2300.0  2400.0  3100.0  3300.0
+1800.0  2000.0  2300.0  2500.0  3000.0  3100.0
+1800.0  1900.0  2200.0  2400.0  3100.0  3200.0
+1400.0  1600.0  2100.0  2600.0  3000.0  3200.0
+1400.0  1600.0  2000.0  2500.0  3000.0  3200.0
+1400.0  1800.0  2000.0  2400.0  3200.0  3300.0
+1200.0  1900.0  2100.0  2500.0  3100.0  3200.0
+1100.0  1700.0  2100.0  2300.0  3000.0  3100.0
+1300.0  1500.0  1700.0  2000.0  2900.0  3100.0
+1600.0  1900.0  2200.0  2400.0  2900.0  3100.0
+1700.0  2000.0  2200.0  2500.0  3200.0  3300.0
+1700.0  1800.0  2100.0  2500.0  3100.0  3300.0
+2000.0  2300.0  2500.0  2700.0  3100.0  3400.0
+1900.0  2200.0  2500.0  2600.0  3000.0  3300.0
+1900.0  2000.0  2300.0  2400.0  3100.0  3300.0
+1800.0  1900.0  2300.0  2400.0  3000.0  3200.0
+1800.0  1900.0  2300.0  2500.0  3100.0  3200.0
+1700.0  1800.0  2300.0  2400.0  3000.0  3100.0
+1500.0  1600.0  2500.0  2600.0  2900.0  3300.0
+1500.0  1700.0  2500.0  2600.0  3100.0  3200.0
+1900.0  2300.0  2500.0  2800.0  3200.0  3300.0
+1400.0  1600.0  2000.0  2600.0  3000.0  3200.0
+1700.0  1900.0  2100.0  2600.0  3000.0  3100.0
+1800.0  1900.0  2400.0  2900.0  3100.0  3300.0
+1800.0  1900.0  2500.0  2900.0  3100.0  3300.0
+1600.0  1800.0  2100.0  2700.0  3000.0  3200.0
+1700.0  2000.0  2300.0  2700.0  2900.0  3200.0
+1600.0  2000.0  2400.0  2600.0  2900.0  3200.0
+1500.0  1700.0  2300.0  2500.0  3300.0  3400.0
+1400.0  1600.0  2200.0  2400.0  3100.0  3300.0
+1500.0  1600.0  2200.0  2500.0  3200.0  3400.0
+1600.0  1700.0  2300.0  2400.0  3200.0  3300.0
+1600.0  1700.0  2300.0  2500.0  3200.0  3300.0
+1600.0  1700.0  2200.0  2500.0  3200.0  3300.0
+1700.0  2100.0  2300.0  2400.0  3100.0  3300.0
+1600.0  2000.0  2400.0  2500.0  3000.0  3300.0
+1500.0  1800.0  2300.0  2400.0  2900.0  3200.0
+1600.0  2000.0  2400.0  2800.0  3200.0  3400.0
+1900.0  2200.0  2600.0  2800.0  3200.0  3400.0
+1900.0  2200.0  2500.0  2800.0  3100.0  3400.0
+1300.0  1800.0  2400.0  2600.0  3100.0  3400.0
+1300.0  1500.0  2400.0  2500.0  2900.0  3300.0
+1300.0  1700.0  2500.0  2600.0  3100.0  3200.0
+1300.0  1700.0  2600.0  2700.0  3200.0  3300.0
+1400.0  1900.0  2600.0  2700.0  3200.0  3300.0
+1400.0  2000.0  2600.0  2700.0  3200.0  3300.0
+1700.0  1900.0  2100.0  2600.0  3200.0  3300.0
+1700.0  2000.0  2100.0  2300.0  3200.0  3300.0
+2000.0  2100.0  2400.0  2600.0  3200.0  3400.0
+2100.0  2200.0  2500.0  2700.0  3200.0  3400.0
+1800.0  1900.0  2500.0  2700.0  3200.0  3400.0
+1700.0  2000.0  2500.0  2700.0  3300.0  3400.0
+1400.0  1900.0  2500.0  2700.0  3100.0  3200.0
+1500.0  1800.0  2500.0  2600.0  3100.0  3300.0
+1600.0  2000.0  2300.0  2600.0  3000.0  3200.0
+1600.0  1900.0  2300.0  2700.0  3000.0  3200.0
+1600.0  1800.0  2300.0  2600.0  3000.0  3200.0
+1400.0  1600.0  2100.0  2500.0  3000.0  3200.0
+1400.0  1800.0  2200.0  2500.0  2700.0  3100.0
+1400.0  1900.0  2300.0  2500.0  3100.0  3200.0
+1300.0  2000.0  2300.0  2500.0  3100.0  3200.0
+1300.0  1900.0  2300.0  2500.0  3100.0  3200.0
+1800.0  2100.0  2500.0  2700.0  3000.0  3300.0
+1800.0  2100.0  2400.0  2700.0  3100.0  3300.0
+1900.0  2100.0  2500.0  2700.0  3100.0  3300.0
+1600.0  1800.0  2300.0  2400.0  3200.0  3400.0
+1700.0  1800.0  2400.0  2500.0  3300.0  3400.0
+1900.0  2000.0  2700.0  2800.0  3200.0  3400.0
+1900.0  2000.0  2600.0  2900.0  3100.0  3300.0
+2000.0  2200.0  2800.0  2900.0  3300.0  3400.0
+2000.0  2100.0  2700.0  2800.0  3300.0  3400.0
+1900.0  2100.0  2400.0  2700.0  3300.0  3400.0
+1600.0  1900.0  2100.0  2500.0  3200.0  3300.0
+1400.0  1900.0  2100.0  2400.0  3200.0  3300.0
+1200.0  1900.0  2100.0  2400.0  3100.0  3200.0
+1200.0  1800.0  2100.0  2500.0  2900.0  3200.0
+1300.0  1700.0  1900.0  2400.0  2800.0  2900.0
+1900.0  2300.0  2600.0  3000.0  3200.0  3300.0
+1800.0  2300.0  2600.0  3000.0  3300.0  3400.0
+1800.0  2200.0  2500.0  2800.0  3300.0  3500.0
+1700.0  1900.0  2300.0  2400.0  3200.0  3400.0
+1800.0  1900.0  2400.0  2500.0  3100.0  3300.0
+2100.0  2200.0  2400.0  2500.0  3100.0  3300.0
+1800.0  2100.0  2500.0  2800.0  3100.0  3200.0
+2000.0  2300.0  2600.0  2700.0  3100.0  3300.0
+2100.0  2200.0  2500.0  2600.0  3100.0  3300.0
+2000.0  2200.0  2300.0  2500.0  3100.0  3300.0
+1800.0  1900.0  2100.0  2300.0  3200.0  3300.0
+1800.0  1900.0  2100.0  2400.0  3300.0  3400.0
+1700.0  1800.0  2200.0  2300.0  3300.0  3400.0
+1700.0  1800.0  2200.0  2300.0  3200.0  3400.0
+1600.0  1700.0  2200.0  2300.0  2900.0  3400.0
+1400.0  1600.0  2500.0  2600.0  3100.0  3200.0
+1300.0  1400.0  2400.0  2600.0  3000.0  3100.0
+1300.0  1500.0  2400.0  2500.0  3000.0  3200.0
+1300.0  1800.0  2400.0  2500.0  3100.0  3200.0
+1300.0  1900.0  2400.0  2500.0  3100.0  3200.0
+1800.0  1900.0  2200.0  2400.0  3300.0  3400.0
+1000.0  1500.0  2500.0  2600.0  3200.0  3400.0
+1000.0  1700.0  2500.0  2600.0  3200.0  3300.0
+1300.0  1700.0  2200.0  2600.0  3000.0  3200.0
+900.0  1800.0  2400.0  2600.0  3300.0  3400.0
+900.0  1800.0  2300.0  2400.0  3300.0  3400.0
+1000.0  1600.0  2300.0  2400.0  3300.0  3400.0
+1400.0  1900.0  2200.0  2600.0  3300.0  3400.0
+1500.0  1900.0  2300.0  2600.0  3300.0  3400.0
+1300.0  2000.0  2200.0  2500.0  3000.0  3200.0
+1100.0  1800.0  2300.0  2500.0  3200.0  3300.0
+1100.0  1800.0  2400.0  2600.0  3200.0  3300.0
+1100.0  1900.0  2400.0  2700.0  3200.0  3300.0
+1300.0  2000.0  2200.0  2400.0  3200.0  3300.0
+1800.0  2100.0  2400.0  2800.0  3300.0  3400.0
+1700.0  2200.0  2500.0  2700.0  3300.0  3400.0
+1700.0  2000.0  2300.0  2700.0  3200.0  3400.0
+1200.0  1600.0  2500.0  2600.0  3200.0  3400.0
+1100.0  1900.0  2500.0  2600.0  3200.0  3300.0
+1500.0  1600.0  2400.0  2700.0  2900.0  3200.0
+1500.0  1800.0  2500.0  2700.0  3100.0  3400.0
+1600.0  1900.0  2600.0  2800.0  3100.0  3300.0
+1700.0  1800.0  2600.0  2700.0  3000.0  3300.0
+1700.0  1800.0  2500.0  2600.0  2900.0  3200.0
+1700.0  1800.0  2500.0  2600.0  3000.0  3300.0
+1600.0  1700.0  2500.0  2600.0  3000.0  3300.0
+1700.0  2000.0  2400.0  2700.0  3100.0  3400.0
+1700.0  1800.0  2400.0  2600.0  2900.0  3200.0
+1800.0  1900.0  2500.0  2600.0  2900.0  3200.0
+1700.0  1800.0  2200.0  2500.0  2700.0  3200.0
+1700.0  1800.0  2300.0  2500.0  2800.0  3200.0
+1500.0  1600.0  2000.0  2400.0  2600.0  2900.0
+1200.0  1300.0  2100.0  2400.0  2600.0  3200.0
+1700.0  2200.0  2500.0  2900.0  3200.0  3400.0
+1700.0  2200.0  2600.0  2900.0  3400.0  3500.0
+1700.0  2100.0  2700.0  2900.0  3400.0  3500.0
+1500.0  1800.0  2400.0  2600.0  3100.0  3300.0
+1100.0  1700.0  2500.0  2600.0  3200.0  3300.0
+1300.0  1700.0  2600.0  2700.0  3200.0  3400.0
+1400.0  1900.0  2600.0  2800.0  3200.0  3300.0
+1600.0  2000.0  2500.0  2900.0  3300.0  3400.0
+1500.0  1700.0  2500.0  2700.0  3100.0  3300.0
+1800.0  2000.0  2500.0  2700.0  2900.0  3300.0
+1900.0  2000.0  2600.0  2700.0  2900.0  3300.0
+1900.0  2100.0  2400.0  2700.0  2900.0  3200.0
+1900.0  2000.0  2500.0  2700.0  3000.0  3300.0
+1900.0  2000.0  2400.0  2700.0  3000.0  3300.0
+1700.0  1900.0  2500.0  2600.0  3100.0  3400.0
+1600.0  1900.0  2500.0  2600.0  3200.0  3500.0
+1900.0  2100.0  2600.0  2900.0  3200.0  3400.0
+2100.0  2300.0  2700.0  2900.0  3200.0  3300.0
+1600.0  2000.0  2200.0  2400.0  3100.0  3200.0
+1700.0  1900.0  2200.0  2400.0  2900.0  3100.0
+1700.0  1800.0  2100.0  2400.0  2800.0  3200.0
+1900.0  2200.0  2500.0  2700.0  3000.0  3200.0
+1900.0  2300.0  2600.0  2700.0  3100.0  3200.0
+1800.0  2400.0  2600.0  2900.0  3200.0  3300.0
+1800.0  2300.0  2500.0  2900.0  3200.0  3300.0
+1600.0  1800.0  2500.0  2600.0  3300.0  3400.0
+1500.0  1700.0  2200.0  2400.0  2900.0  3200.0
+1500.0  1600.0  2200.0  2300.0  2800.0  3200.0
+1400.0  1500.0  2100.0  2200.0  2800.0  3200.0
+1400.0  1500.0  2100.0  2300.0  2800.0  3200.0
+1400.0  1500.0  2200.0  2400.0  2700.0  3100.0
+1700.0  1900.0  2400.0  2800.0  3100.0  3200.0
+1700.0  1800.0  2400.0  2700.0  3100.0  3300.0
+1800.0  1900.0  2300.0  2700.0  2900.0  3300.0
+2000.0  2100.0  2400.0  2700.0  3000.0  3300.0
+1400.0  1600.0  2500.0  2700.0  3100.0  3400.0
+1000.0  1600.0  2300.0  2400.0  3100.0  3200.0
+1100.0  1700.0  2400.0  2500.0  3200.0  3300.0
+1200.0  1700.0  2300.0  2400.0  3100.0  3200.0
+2000.0  2100.0  2400.0  2500.0  3100.0  3300.0
+1900.0  2000.0  2300.0  2500.0  3100.0  3300.0
+1600.0  1800.0  2300.0  2500.0  3200.0  3300.0
+1400.0  1600.0  2300.0  2400.0  3100.0  3300.0
+1300.0  1500.0  2300.0  2500.0  3000.0  3300.0
+1300.0  1500.0  2300.0  2500.0  3100.0  3200.0
+1300.0  1800.0  2300.0  2600.0  3100.0  3200.0
+1800.0  1900.0  2400.0  2500.0  3000.0  3200.0
+1900.0  2400.0  2600.0  3000.0  3200.0  3300.0
+1400.0  1500.0  2400.0  2600.0  2900.0  3300.0
+1400.0  1500.0  2200.0  2600.0  2800.0  3300.0
+1400.0  1500.0  2200.0  2500.0  2800.0  3200.0
+1400.0  1500.0  2300.0  2500.0  3000.0  3300.0
+1600.0  2000.0  2400.0  2700.0  3200.0  3400.0
+1700.0  2200.0  2600.0  2800.0  3100.0  3300.0
+1800.0  2100.0  2600.0  2700.0  3200.0  3300.0
+1700.0  2200.0  2500.0  2700.0  3200.0  3300.0
+1500.0  1700.0  2200.0  2300.0  3000.0  3300.0
+1600.0  1700.0  2200.0  2500.0  3200.0  3400.0
+1600.0  1800.0  2300.0  2400.0  3100.0  3300.0
+1700.0  1800.0  2200.0  2400.0  3000.0  3300.0
+1700.0  1800.0  2200.0  2300.0  3000.0  3200.0
+1700.0  1800.0  2200.0  2300.0  3100.0  3300.0
+1700.0  2000.0  2200.0  2600.0  3200.0  3300.0
+1800.0  1900.0  2200.0  2500.0  3100.0  3200.0
+1600.0  1700.0  2100.0  2400.0  2900.0  3200.0
+1500.0  1800.0  2300.0  2700.0  3000.0  3300.0
+1500.0  1800.0  2200.0  2600.0  3000.0  3300.0
+1700.0  2000.0  2500.0  2700.0  3200.0  3300.0
+1900.0  2000.0  2600.0  2800.0  3200.0  3400.0
+1800.0  1900.0  2500.0  2800.0  3100.0  3300.0
+1600.0  1800.0  2500.0  2600.0  3000.0  3300.0
+1200.0  1500.0  2500.0  2700.0  3100.0  3200.0
+1100.0  1900.0  2500.0  2600.0  3100.0  3200.0
+1200.0  1900.0  2400.0  2500.0  3100.0  3200.0
+1500.0  1700.0  2100.0  2200.0  3200.0  3300.0
+1600.0  1800.0  2000.0  2200.0  3300.0  3400.0
+1500.0  1600.0  1800.0  2000.0  3300.0  3400.0
+1400.0  1600.0  1800.0  1900.0  3300.0  3400.0
+1400.0  1600.0  2400.0  2600.0  3000.0  3400.0
+1400.0  1800.0  2500.0  2600.0  3100.0  3200.0
+1500.0  1700.0  2400.0  2700.0  3100.0  3300.0
+1500.0  1800.0  2500.0  2700.0  3000.0  3300.0
+1400.0  1500.0  2400.0  2600.0  3000.0  3300.0
+1200.0  1400.0  2300.0  2400.0  3000.0  3200.0
+1200.0  1600.0  2300.0  2400.0  3100.0  3200.0
+1400.0  2000.0  2400.0  2700.0  3100.0  3300.0
+1600.0  1900.0  2300.0  2700.0  3100.0  3200.0
+1500.0  1900.0  2300.0  2700.0  3100.0  3200.0
+1200.0  1400.0  2300.0  2500.0  3100.0  3300.0
+1800.0  1900.0  2400.0  2600.0  3000.0  3100.0
+1800.0  1900.0  2500.0  2600.0  2900.0  3100.0
+1600.0  2000.0  2400.0  2700.0  3000.0  3300.0
+1600.0  1900.0  2400.0  2500.0  3100.0  3300.0
+1600.0  1900.0  2500.0  2600.0  3100.0  3200.0
+1700.0  1800.0  2400.0  2500.0  2900.0  3300.0
+1700.0  1800.0  2300.0  2500.0  2900.0  3200.0
+1700.0  1800.0  2400.0  2500.0  3000.0  3200.0
+1800.0  1900.0  2200.0  2500.0  3000.0  3200.0
+1700.0  2000.0  2300.0  2500.0  3000.0  3200.0
+1800.0  2000.0  2300.0  2500.0  3000.0  3200.0
+1900.0  2100.0  2300.0  2600.0  3000.0  3200.0
+1900.0  2100.0  2400.0  2600.0  3000.0  3300.0
+2000.0  2100.0  2300.0  2500.0  3000.0  3200.0
+1700.0  1800.0  2300.0  2600.0  3100.0  3300.0
+1700.0  2100.0  2500.0  2700.0  3200.0  3400.0
+1700.0  1900.0  2300.0  2500.0  3000.0  3200.0
+1800.0  1900.0  2200.0  2400.0  2900.0  3300.0
+1800.0  1900.0  2300.0  2500.0  3000.0  3300.0
+1800.0  2000.0  2200.0  2500.0  2900.0  3200.0
+1900.0  2200.0  2400.0  2600.0  2900.0  3200.0
+1700.0  2100.0  2600.0  2800.0  3100.0  3300.0
+1800.0  2300.0  2700.0  2900.0  3200.0  3300.0
+2000.0  2300.0  2800.0  2900.0  3100.0  3300.0
+2100.0  2200.0  2600.0  2800.0  3200.0  3300.0
+1800.0  1900.0  2300.0  2400.0  3100.0  3200.0
+1700.0  1800.0  2300.0  2500.0  3000.0  3200.0
+1800.0  1900.0  2300.0  2500.0  3000.0  3200.0
+1800.0  1900.0  2300.0  2600.0  3100.0  3200.0
+1800.0  2000.0  2300.0  2600.0  3100.0  3200.0
+1400.0  1600.0  1800.0  2000.0  3100.0  3300.0
+1300.0  1700.0  2300.0  2400.0  3100.0  3200.0
+1500.0  1700.0  2300.0  2400.0  3100.0  3200.0
+1600.0  1700.0  2300.0  2500.0  2900.0  3100.0
+1500.0  1700.0  2300.0  2500.0  2900.0  3100.0
+1500.0  1700.0  2300.0  2500.0  2800.0  3000.0
+1500.0  1600.0  2300.0  2500.0  2800.0  3200.0
+1400.0  1500.0  2300.0  2600.0  3000.0  3200.0
+1200.0  1600.0  2400.0  2500.0  3000.0  3300.0
+1400.0  1600.0  2200.0  2500.0  2900.0  3200.0
+1500.0  1900.0  2300.0  2600.0  2900.0  3200.0
+1400.0  1800.0  2400.0  2700.0  3200.0  3400.0
+1500.0  1900.0  2400.0  2700.0  3200.0  3400.0
+1700.0  2100.0  2400.0  2800.0  3000.0  3300.0
+1700.0  2000.0  2500.0  2700.0  3100.0  3400.0
+1800.0  1900.0  2400.0  2800.0  3200.0  3300.0
+1800.0  1900.0  2300.0  2900.0  3200.0  3300.0
+1800.0  1900.0  2500.0  2800.0  3200.0  3300.0
+1700.0  1800.0  2400.0  2800.0  3200.0  3300.0
+1700.0  1800.0  2400.0  2700.0  3200.0  3300.0
+1600.0  1700.0  2300.0  2600.0  3000.0  3300.0
+1600.0  1700.0  2200.0  2500.0  2900.0  3300.0
+1500.0  1600.0  2300.0  2500.0  3000.0  3300.0
+1500.0  1900.0  2400.0  2500.0  3300.0  3400.0
+1500.0  2000.0  2400.0  2800.0  3200.0  3300.0
+1400.0  1800.0  2400.0  2700.0  3200.0  3300.0
+1400.0  1900.0  2400.0  2700.0  3200.0  3400.0
+1300.0  1700.0  2300.0  2500.0  3200.0  3400.0
+1100.0  1700.0  2300.0  2400.0  3100.0  3200.0
+1500.0  1700.0  1900.0  2200.0  3300.0  3400.0
+1900.0  2300.0  2600.0  2800.0  3200.0  3400.0
+1900.0  2400.0  2700.0  2800.0  3300.0  3400.0
+2000.0  2300.0  2700.0  2900.0  3400.0  3500.0
+1900.0  2300.0  2700.0  2900.0  3400.0  3500.0
+1900.0  2100.0  2800.0  2900.0  3300.0  3400.0
+1700.0  1800.0  2700.0  2800.0  3100.0  3300.0
+1500.0  1700.0  2700.0  2800.0  3200.0  3300.0
+1500.0  1600.0  2600.0  2700.0  3000.0  3300.0
+1400.0  1600.0  2600.0  2800.0  3000.0  3200.0
+1200.0  1400.0  2600.0  2700.0  3000.0  3200.0
+1000.0  1500.0  2600.0  2800.0  3200.0  3400.0
+1100.0  1300.0  2500.0  2800.0  3000.0  3200.0
+1500.0  1600.0  2500.0  2600.0  3000.0  3300.0
+1400.0  1500.0  2300.0  2600.0  2800.0  3200.0
+1400.0  1600.0  2200.0  2600.0  2800.0  3100.0
+1500.0  1600.0  2300.0  2700.0  2900.0  3200.0
+1400.0  1500.0  2500.0  2600.0  3100.0  3400.0
+1400.0  1500.0  2400.0  2600.0  2800.0  3300.0
+1400.0  1600.0  2400.0  2600.0  2800.0  3200.0
+1300.0  1600.0  2300.0  2600.0  2900.0  3300.0
+1700.0  2200.0  2600.0  2700.0  3200.0  3300.0
+1700.0  2300.0  2600.0  2700.0  3200.0  3300.0
+1700.0  1900.0  2400.0  2600.0  3100.0  3200.0
+1800.0  2300.0  2500.0  2600.0  3200.0  3300.0
+1900.0  2400.0  2500.0  2800.0  3300.0  3400.0
+1800.0  2000.0  2600.0  2800.0  3300.0  3400.0
+1600.0  1900.0  2400.0  2800.0  3200.0  3300.0
+1700.0  1800.0  2600.0  2800.0  3000.0  3300.0
+1900.0  2000.0  2600.0  2800.0  3200.0  3300.0
+2000.0  2100.0  2700.0  2800.0  3200.0  3400.0
+2000.0  2100.0  2600.0  2800.0  3300.0  3400.0
+1600.0  1700.0  2300.0  2600.0  2900.0  3300.0
+1400.0  1600.0  2400.0  2500.0  2800.0  3200.0
+1800.0  1900.0  2500.0  2700.0  3000.0  3400.0
+1900.0  2000.0  2600.0  2700.0  3000.0  3300.0
+1700.0  2000.0  2400.0  2600.0  2900.0  3200.0
+1500.0  1600.0  2300.0  2600.0  3000.0  3300.0
+1500.0  1600.0  2400.0  2600.0  2900.0  3300.0
+1400.0  1500.0  2300.0  2700.0  3000.0  3300.0
+1600.0  1800.0  2500.0  2600.0  2900.0  3200.0
+2000.0  2100.0  2400.0  2600.0  3000.0  3200.0
+1800.0  2000.0  2300.0  2400.0  3200.0  3300.0
+1600.0  1900.0  2300.0  2400.0  3200.0  3300.0
+1500.0  1800.0  2400.0  2700.0  3200.0  3300.0
+1700.0  1900.0  2300.0  2400.0  3000.0  3200.0
+2000.0  2200.0  2400.0  2500.0  3200.0  3300.0
+2200.0  2300.0  2600.0  2700.0  3200.0  3300.0
+2100.0  2200.0  2400.0  2700.0  3000.0  3200.0
+2100.0  2200.0  2500.0  2700.0  3000.0  3200.0
+2200.0  2300.0  2600.0  2800.0  3000.0  3300.0
+1900.0  2200.0  2600.0  2700.0  3000.0  3300.0
+1700.0  1800.0  2500.0  2700.0  2800.0  3200.0
+1700.0  1800.0  2600.0  2700.0  3000.0  3200.0
+1700.0  1900.0  2500.0  2700.0  3100.0  3300.0
+1700.0  1900.0  2500.0  2700.0  3300.0  3400.0
+1800.0  2000.0  2400.0  2600.0  3100.0  3200.0
+1700.0  2200.0  2300.0  2500.0  3200.0  3300.0
+1700.0  2200.0  2300.0  2600.0  3100.0  3200.0
+1600.0  1700.0  2400.0  2600.0  3300.0  3400.0
+1600.0  1700.0  2400.0  2500.0  3300.0  3400.0
+1900.0  2100.0  2500.0  2800.0  3000.0  3100.0
+1800.0  2100.0  2500.0  2800.0  3000.0  3100.0
+1800.0  2100.0  2600.0  2800.0  3100.0  3200.0
+1800.0  2000.0  2500.0  2800.0  3100.0  3200.0
+1900.0  2100.0  2500.0  2600.0  3000.0  3200.0
+1800.0  1900.0  2600.0  2800.0  3200.0  3400.0
+1500.0  2100.0  2500.0  2700.0  3300.0  3400.0
+1100.0  2000.0  2400.0  2600.0  3300.0  3400.0
+1100.0  1900.0  2400.0  2500.0  3300.0  3400.0
+1300.0  1500.0  2200.0  2400.0  2900.0  3300.0
+1600.0  1700.0  2300.0  2500.0  2900.0  3300.0
+1600.0  1700.0  2400.0  2500.0  3000.0  3200.0
+1800.0  1900.0  2500.0  2600.0  3100.0  3300.0
+1900.0  2000.0  2500.0  2700.0  3100.0  3200.0
+2100.0  2200.0  2400.0  2600.0  3100.0  3400.0
+2100.0  2200.0  2500.0  2600.0  3000.0  3400.0
+1900.0  2100.0  2400.0  2700.0  3000.0  3100.0
+1600.0  1800.0  2200.0  2400.0  3000.0  3200.0
+1600.0  1700.0  2200.0  2300.0  2900.0  3300.0
+1600.0  1700.0  2100.0  2300.0  2800.0  3100.0
+2200.0  2300.0  2600.0  2800.0  3100.0  3300.0
+2200.0  2300.0  2700.0  2800.0  3100.0  3400.0
+2000.0  2100.0  2600.0  2800.0  3100.0  3400.0
+1700.0  1800.0  2400.0  2700.0  2900.0  3200.0
+1600.0  1800.0  2400.0  2700.0  3100.0  3200.0
+1600.0  1800.0  2300.0  2400.0  3000.0  3200.0
+1800.0  1900.0  2400.0  2600.0  3100.0  3300.0
+1900.0  2000.0  2300.0  2600.0  2900.0  3200.0
+1900.0  2100.0  2300.0  2700.0  2800.0  3000.0
+1800.0  2000.0  2600.0  2700.0  3000.0  3300.0
+1800.0  1900.0  2400.0  2600.0  2900.0  3300.0
+1700.0  1800.0  2300.0  2400.0  2900.0  3300.0
+1600.0  1700.0  2100.0  2500.0  3000.0  3200.0
+1600.0  1800.0  2200.0  2600.0  3100.0  3200.0
+1500.0  1700.0  2200.0  2500.0  2900.0  3300.0
+1500.0  1600.0  2300.0  2400.0  2800.0  3300.0
+1400.0  1600.0  2300.0  2400.0  3000.0  3300.0
+1500.0  2000.0  2500.0  2800.0  3200.0  3300.0
+1300.0  1500.0  2600.0  2700.0  3100.0  3300.0
+1200.0  1400.0  1700.0  1900.0  3100.0  3300.0
+1200.0  1700.0  1900.0  2300.0  3200.0  3300.0
+1200.0  1900.0  2000.0  2300.0  3200.0  3300.0
+1200.0  2000.0  2100.0  2500.0  3300.0  3400.0
+1200.0  2000.0  2200.0  2600.0  3300.0  3400.0
+1200.0  2000.0  2300.0  2400.0  3200.0  3300.0
+1000.0  1900.0  2300.0  2500.0  3200.0  3300.0
+1200.0  1800.0  2200.0  2500.0  3100.0  3200.0
+1400.0  1600.0  2300.0  2500.0  3200.0  3300.0
+1500.0  1600.0  2500.0  2700.0  2900.0  3200.0
+1600.0  1900.0  2400.0  2800.0  3100.0  3300.0
+1700.0  1800.0  2400.0  2800.0  3100.0  3200.0
+1700.0  1800.0  2500.0  2800.0  3100.0  3200.0
+1500.0  1800.0  2400.0  2500.0  2900.0  3100.0
+1500.0  1600.0  2400.0  2500.0  2900.0  3200.0
+1300.0  1500.0  2200.0  2500.0  2800.0  3100.0
+1300.0  1400.0  2000.0  2400.0  2600.0  2900.0
+1400.0  1500.0  2100.0  2500.0  2700.0  3100.0
+1500.0  2000.0  2300.0  2600.0  3000.0  3200.0
+1700.0  2100.0  2400.0  2600.0  2900.0  3100.0
+1400.0  1500.0  2300.0  2600.0  3000.0  3300.0
+1500.0  1700.0  2200.0  2300.0  3200.0  3300.0
+1400.0  1600.0  2000.0  2400.0  3100.0  3300.0
+1500.0  1700.0  2000.0  2100.0  3100.0  3300.0
+1600.0  1900.0  2200.0  2500.0  2900.0  3200.0
+1500.0  1600.0  2200.0  2400.0  2800.0  3200.0
+1500.0  1600.0  2100.0  2500.0  3000.0  3300.0
+1500.0  1600.0  2000.0  2500.0  2900.0  3300.0
+1500.0  1600.0  2100.0  2500.0  2900.0  3200.0
+1500.0  1600.0  2200.0  2700.0  2800.0  3100.0
+1300.0  1400.0  2200.0  2600.0  3000.0  3200.0
+1400.0  1900.0  2400.0  2700.0  3100.0  3300.0
+1600.0  1800.0  2500.0  2600.0  3000.0  3200.0
+1500.0  1700.0  2300.0  2500.0  2800.0  3200.0
+1700.0  1800.0  2200.0  2400.0  3200.0  3300.0
+1700.0  1900.0  2200.0  2300.0  3000.0  3300.0
+1600.0  1700.0  2000.0  2400.0  3000.0  3200.0
+1700.0  1800.0  2300.0  2600.0  2900.0  3200.0
+1500.0  2000.0  2300.0  2600.0  3100.0  3400.0
+1400.0  1900.0  2500.0  2700.0  3100.0  3300.0
+1400.0  1700.0  2600.0  2700.0  3100.0  3300.0
+1500.0  1600.0  2300.0  2600.0  2800.0  3200.0
+1700.0  1800.0  2300.0  2500.0  3100.0  3400.0
+1500.0  1600.0  2200.0  2300.0  3100.0  3300.0
+1400.0  1500.0  2200.0  2400.0  3100.0  3200.0
+1400.0  1600.0  2200.0  2400.0  3000.0  3100.0
+1700.0  2100.0  2300.0  2700.0  3100.0  3200.0
+1900.0  2300.0  2500.0  2700.0  3100.0  3200.0
+1900.0  2300.0  2600.0  2800.0  3100.0  3300.0
+1900.0  2400.0  2600.0  2900.0  3200.0  3300.0
+1900.0  2300.0  2600.0  2800.0  3300.0  3400.0
+1800.0  2400.0  2600.0  2800.0  3300.0  3400.0
+1600.0  1800.0  2600.0  2700.0  3000.0  3300.0
+1600.0  1700.0  2600.0  2700.0  2900.0  3200.0
+1500.0  1600.0  2500.0  2700.0  3000.0  3300.0
+1300.0  1400.0  2400.0  2700.0  2900.0  3300.0
+1300.0  1400.0  2300.0  2700.0  2800.0  3100.0
+1300.0  1400.0  2500.0  2800.0  3000.0  3300.0
+1500.0  1700.0  2400.0  2500.0  2800.0  3300.0
+1900.0  2000.0  2500.0  2600.0  3000.0  3200.0
+1800.0  2000.0  2400.0  2500.0  3100.0  3200.0
+1700.0  1800.0  2100.0  2300.0  2800.0  3100.0
+1700.0  1800.0  2200.0  2400.0  2800.0  3200.0
+1600.0  1700.0  2200.0  2400.0  2800.0  3200.0
+1500.0  1600.0  2200.0  2400.0  2700.0  3300.0
+1400.0  1500.0  2200.0  2400.0  2900.0  3200.0
+1600.0  1700.0  2300.0  2500.0  2700.0  3000.0
+1600.0  1700.0  2200.0  2500.0  2700.0  3000.0
+1700.0  1900.0  2200.0  2500.0  2800.0  3100.0
+1900.0  2000.0  2300.0  2500.0  2900.0  3100.0
+1900.0  2100.0  2300.0  2500.0  2900.0  3200.0
+1900.0  2100.0  2300.0  2500.0  3100.0  3300.0
+2000.0  2200.0  2600.0  2800.0  3000.0  3200.0
+1900.0  2200.0  2500.0  2700.0  2900.0  3200.0
+2100.0  2300.0  2600.0  2800.0  3100.0  3300.0
+2100.0  2300.0  2600.0  2700.0  3000.0  3200.0
+2100.0  2200.0  2500.0  2600.0  3000.0  3200.0
+1500.0  1600.0  2300.0  2400.0  2900.0  3200.0
+1400.0  1500.0  2100.0  2400.0  2800.0  3100.0
+1300.0  1600.0  2100.0  2400.0  3100.0  3200.0
+1300.0  1400.0  2300.0  2600.0  2800.0  3200.0
+1400.0  1500.0  2200.0  2500.0  2700.0  3200.0
+1400.0  1500.0  2300.0  2500.0  2700.0  3200.0
+1500.0  1600.0  2400.0  2500.0  2800.0  3200.0
+1600.0  1700.0  2400.0  2500.0  2900.0  3200.0
+1700.0  1800.0  2400.0  2500.0  2900.0  3100.0
+1800.0  1900.0  2400.0  2600.0  3000.0  3200.0
+2100.0  2200.0  2700.0  2900.0  3200.0  3300.0
+1800.0  2100.0  2500.0  2900.0  3100.0  3300.0
+1700.0  1800.0  2500.0  2800.0  2900.0  3300.0
+1200.0  1600.0  2100.0  2400.0  3000.0  3200.0
+1600.0  1700.0  2100.0  2600.0  2900.0  3000.0
+1600.0  1700.0  2200.0  2700.0  2900.0  3000.0
+1600.0  1800.0  2200.0  2500.0  2900.0  3000.0
+1700.0  1800.0  2300.0  2500.0  2900.0  3100.0
+1700.0  1900.0  2300.0  2600.0  2900.0  3100.0
+1500.0  1700.0  2000.0  2600.0  2900.0  3100.0
+1400.0  1600.0  1800.0  2600.0  3000.0  3100.0
+1300.0  1500.0  1700.0  2700.0  3100.0  3200.0
+1300.0  1700.0  2400.0  2700.0  3100.0  3300.0
+1200.0  1600.0  2400.0  2600.0  2900.0  3200.0
+1300.0  1400.0  2000.0  2700.0  2800.0  3000.0
+1400.0  1500.0  2000.0  2600.0  2800.0  3000.0
+1500.0  1700.0  2100.0  2600.0  2800.0  3000.0
+1600.0  1800.0  2200.0  2700.0  2800.0  3000.0
+1600.0  1800.0  2100.0  2700.0  2900.0  3100.0
+1500.0  1900.0  2300.0  2700.0  3000.0  3100.0
+1500.0  1900.0  2300.0  2700.0  3000.0  3200.0
+1500.0  2000.0  2300.0  2700.0  3000.0  3200.0
+1800.0  2100.0  2300.0  2700.0  3100.0  3300.0
+1500.0  2000.0  2300.0  2600.0  3000.0  3100.0
+1500.0  2100.0  2300.0  2700.0  3100.0  3200.0
+1600.0  2100.0  2200.0  2700.0  3100.0  3200.0
+1500.0  2100.0  2200.0  2600.0  3100.0  3200.0
+1400.0  2300.0  2500.0  2700.0  3100.0  3200.0
+1700.0  2100.0  2300.0  2700.0  2900.0  3100.0
+1500.0  1800.0  2300.0  2700.0  3000.0  3100.0
+1500.0  1700.0  2300.0  2700.0  3000.0  3100.0
+1500.0  1600.0  2100.0  2700.0  3000.0  3100.0
+1400.0  1500.0  1900.0  2600.0  3100.0  3200.0
+1200.0  1300.0  1900.0  2600.0  2900.0  3100.0
+1100.0  1200.0  1800.0  2700.0  3000.0  3100.0
+1200.0  1300.0  1800.0  2700.0  3000.0  3100.0
+1200.0  1400.0  1900.0  2700.0  3000.0  3100.0
+1300.0  1500.0  1800.0  2600.0  3000.0  3100.0
+1200.0  1400.0  2300.0  2700.0  2900.0  3100.0
+1300.0  1400.0  2200.0  2700.0  2800.0  3100.0
+1300.0  1500.0  2000.0  2600.0  2900.0  3100.0
+1300.0  1500.0  2100.0  2700.0  2900.0  3100.0
+1400.0  1800.0  2100.0  2600.0  2800.0  3000.0
+1400.0  1800.0  2100.0  2500.0  2900.0  3100.0
+1700.0  2000.0  2500.0  2800.0  3000.0  3200.0
+1900.0  2000.0  2700.0  2800.0  3100.0  3400.0
+1900.0  2100.0  2600.0  2800.0  3100.0  3300.0
+1600.0  2100.0  2400.0  2700.0  3200.0  3400.0
+1700.0  2000.0  2300.0  2500.0  2800.0  3200.0
+1500.0  1700.0  2100.0  2300.0  3000.0  3200.0
+1400.0  1900.0  2200.0  2500.0  2900.0  3200.0
+1400.0  1900.0  2300.0  2500.0  2700.0  3100.0
+1300.0  1500.0  2100.0  2700.0  2800.0  3100.0
+1300.0  1500.0  2000.0  2600.0  2800.0  3100.0
+1300.0  1400.0  2100.0  2600.0  2800.0  3000.0
+1300.0  1400.0  2000.0  2600.0  2800.0  3000.0
+1200.0  1300.0  2000.0  2700.0  2800.0  3000.0
+1200.0  1400.0  2300.0  2600.0  2900.0  3200.0
+1300.0  1600.0  2300.0  2700.0  2900.0  3200.0
+1600.0  1900.0  2300.0  2800.0  3100.0  3200.0
+1700.0  1900.0  2300.0  2800.0  3000.0  3200.0
+1700.0  1900.0  2100.0  2600.0  2900.0  3000.0
+1700.0  1900.0  2400.0  2600.0  2800.0  3100.0
+1700.0  2100.0  2400.0  2500.0  2800.0  3100.0
+1700.0  2000.0  2400.0  2500.0  2900.0  3100.0
+1900.0  2200.0  2400.0  2600.0  3000.0  3200.0
+1700.0  2000.0  2400.0  2700.0  3000.0  3100.0
+1500.0  1900.0  2300.0  2600.0  3000.0  3100.0
+1500.0  1600.0  2100.0  2600.0  2900.0  3200.0
+1400.0  1600.0  1800.0  2300.0  2800.0  2900.0
+1400.0  1600.0  1700.0  2500.0  3200.0  3300.0
+1400.0  1600.0  1800.0  2400.0  3200.0  3300.0
+1400.0  1700.0  1900.0  2200.0  3100.0  3200.0
+1300.0  1700.0  1900.0  2300.0  3100.0  3200.0
+1100.0  1600.0  2000.0  2300.0  3000.0  3100.0
+1500.0  1900.0  2500.0  2800.0  3200.0  3300.0
+1800.0  2000.0  2300.0  2800.0  3000.0  3100.0
+1800.0  1900.0  2300.0  2700.0  2900.0  3200.0
+1700.0  1900.0  2300.0  2600.0  2800.0  3100.0
+1700.0  1900.0  2100.0  2500.0  2700.0  3000.0
+1700.0  1900.0  2100.0  2600.0  2800.0  3000.0
+1700.0  1900.0  2100.0  2700.0  2900.0  3100.0
+1700.0  1900.0  2500.0  2800.0  3000.0  3300.0
+1400.0  1600.0  1900.0  2600.0  2900.0  3000.0
+1500.0  1600.0  2000.0  2200.0  3200.0  3300.0
+1300.0  1500.0  1700.0  2600.0  3100.0  3200.0
+1300.0  1500.0  1700.0  2700.0  3000.0  3100.0
+1500.0  1700.0  2300.0  2700.0  3000.0  3200.0
+1700.0  2000.0  2500.0  2800.0  3100.0  3200.0
+1200.0  1300.0  1800.0  2600.0  3000.0  3100.0
+1300.0  1600.0  2000.0  2400.0  3000.0  3200.0
+1500.0  1600.0  2000.0  2600.0  3200.0  3300.0
+1600.0  1700.0  2100.0  2700.0  3200.0  3300.0
+1600.0  1800.0  2100.0  2700.0  3100.0  3200.0
+1700.0  1800.0  2100.0  2700.0  3200.0  3300.0
+1600.0  1900.0  2100.0  2700.0  3200.0  3300.0
+1100.0  1800.0  2200.0  2400.0  3000.0  3200.0
+1800.0  1900.0  2200.0  2800.0  3100.0  3200.0
+1700.0  1900.0  2100.0  2700.0  3000.0  3100.0
+1500.0  1800.0  2200.0  2800.0  3100.0  3200.0
+1600.0  1900.0  2200.0  2800.0  3100.0  3200.0
+1600.0  1900.0  2100.0  2700.0  3100.0  3200.0
+1500.0  1900.0  2100.0  2600.0  3100.0  3200.0
+1700.0  2100.0  2400.0  2700.0  3000.0  3300.0
+1900.0  2400.0  2700.0  2900.0  3200.0  3300.0
+1700.0  2200.0  2700.0  2900.0  3200.0  3300.0
+1700.0  2100.0  2700.0  2900.0  3200.0  3300.0
+1700.0  2200.0  2600.0  2900.0  3200.0  3300.0
+1800.0  2400.0  2600.0  2800.0  3100.0  3200.0
+1800.0  2400.0  2500.0  2800.0  3100.0  3200.0
+1800.0  2300.0  2400.0  2700.0  3100.0  3200.0
+1600.0  2300.0  2500.0  2700.0  3100.0  3200.0
+1500.0  2200.0  2400.0  2600.0  3100.0  3200.0
+1600.0  2200.0  2400.0  2600.0  3100.0  3200.0
+1500.0  2200.0  2500.0  2700.0  3100.0  3200.0
+1500.0  2200.0  2400.0  2600.0  3000.0  3100.0
+1600.0  2200.0  2400.0  2700.0  3000.0  3100.0
+1500.0  2100.0  2400.0  2700.0  3000.0  3100.0
+1400.0  1800.0  2100.0  2400.0  3200.0  3300.0
+1200.0  1300.0  2100.0  2800.0  3000.0  3200.0
+1300.0  1400.0  2100.0  2700.0  3000.0  3200.0
+1500.0  1700.0  2200.0  2800.0  3000.0  3100.0
+1800.0  2200.0  2400.0  2600.0  3000.0  3200.0
+1700.0  1900.0  2400.0  2500.0  3000.0  3200.0
+1700.0  1800.0  2500.0  2800.0  3000.0  3200.0
+1600.0  1800.0  2500.0  2700.0  3000.0  3200.0
+1600.0  1700.0  2300.0  2700.0  2900.0  3100.0
+1500.0  1700.0  2100.0  2700.0  3000.0  3100.0
+1500.0  1600.0  2000.0  2600.0  2900.0  3000.0
+1500.0  1600.0  1900.0  2600.0  3000.0  3100.0
+1500.0  1700.0  2000.0  2500.0  3000.0  3100.0
+1500.0  1700.0  2000.0  2500.0  3100.0  3200.0
+1500.0  1700.0  2000.0  2600.0  3000.0  3100.0
+1500.0  1800.0  2000.0  2700.0  3000.0  3100.0
+1700.0  2000.0  2500.0  2800.0  3100.0  3300.0
+1800.0  2000.0  2600.0  2900.0  3200.0  3300.0
+1800.0  2000.0  2500.0  2900.0  3100.0  3300.0
+1400.0  1600.0  1900.0  2600.0  3000.0  3100.0
+1400.0  1600.0  1900.0  2700.0  3000.0  3100.0
+1500.0  1700.0  2300.0  2800.0  3000.0  3200.0
+1700.0  2000.0  2500.0  2700.0  3100.0  3200.0
+1800.0  2300.0  2600.0  2800.0  3200.0  3300.0
+1800.0  2100.0  2600.0  3000.0  3300.0  3400.0
+1800.0  2100.0  2600.0  3000.0  3200.0  3400.0
+1600.0  1800.0  2300.0  2700.0  3100.0  3200.0
+1500.0  1800.0  2100.0  2600.0  3100.0  3200.0
+1100.0  1400.0  2100.0  2800.0  3100.0  3200.0
+1200.0  1700.0  2200.0  2400.0  3000.0  3200.0
+1500.0  2100.0  2500.0  2800.0  3200.0  3400.0
+1500.0  2000.0  2200.0  2400.0  3100.0  3300.0
+1400.0  1900.0  2200.0  2300.0  3000.0  3200.0
+1500.0  1800.0  2200.0  2400.0  3000.0  3200.0
+1200.0  1600.0  2300.0  2500.0  3100.0  3200.0
+1300.0  1900.0  2200.0  2700.0  3200.0  3300.0
+1100.0  1300.0  2000.0  2700.0  3100.0  3200.0
+1400.0  1500.0  2400.0  2700.0  2900.0  3300.0
+1500.0  1800.0  2500.0  2700.0  3000.0  3100.0
+1500.0  1700.0  2500.0  2800.0  3000.0  3200.0
+1400.0  1600.0  2200.0  2400.0  2700.0  3200.0
+1300.0  1400.0  2000.0  2400.0  2600.0  3000.0
+1200.0  1300.0  2100.0  2500.0  2700.0  3100.0
+1800.0  2100.0  2400.0  2600.0  2800.0  3100.0
+1800.0  2100.0  2400.0  2600.0  2800.0  3000.0
+1900.0  2200.0  2500.0  2700.0  2900.0  3100.0
+1900.0  2300.0  2500.0  2800.0  3000.0  3100.0
+1900.0  2400.0  2500.0  2700.0  3100.0  3200.0
+1800.0  2400.0  2500.0  2700.0  3100.0  3200.0
+1800.0  2400.0  2600.0  2700.0  3100.0  3200.0
+1800.0  2400.0  2600.0  2800.0  3200.0  3300.0
+1900.0  2400.0  2600.0  2800.0  3100.0  3300.0
+1900.0  2400.0  2600.0  2800.0  3200.0  3300.0
+1700.0  2400.0  2600.0  2800.0  3200.0  3300.0
+1700.0  2200.0  2600.0  2800.0  3200.0  3300.0
+2000.0  2200.0  2800.0  3000.0  3200.0  3300.0
+1700.0  1900.0  2200.0  2700.0  3100.0  3300.0
+1900.0  2100.0  2400.0  2800.0  3000.0  3200.0
+1900.0  2100.0  2300.0  2800.0  3000.0  3200.0
+1800.0  2100.0  2300.0  2700.0  3000.0  3200.0
+1600.0  2000.0  2200.0  2700.0  3000.0  3100.0
+1600.0  2000.0  2200.0  2500.0  3000.0  3100.0
+1700.0  2000.0  2200.0  2700.0  3000.0  3200.0
+1700.0  2000.0  2200.0  2600.0  3100.0  3200.0
+1600.0  1900.0  2200.0  2700.0  3100.0  3200.0
+1500.0  1900.0  2200.0  2600.0  3100.0  3200.0
+1600.0  1900.0  2300.0  2800.0  3000.0  3100.0
+1600.0  1900.0  2200.0  2700.0  3000.0  3100.0
+1600.0  1900.0  2300.0  2700.0  3000.0  3100.0
+1600.0  2000.0  2400.0  2800.0  3100.0  3200.0
+1700.0  2000.0  2200.0  2700.0  3100.0  3200.0
+1800.0  2000.0  2200.0  2700.0  3000.0  3100.0
+1700.0  2000.0  2100.0  2700.0  3100.0  3200.0
+1900.0  2100.0  2700.0  3000.0  3100.0  3300.0
+1800.0  2100.0  2700.0  3000.0  3200.0  3300.0
+1900.0  2100.0  2600.0  2900.0  3100.0  3200.0
+1900.0  2100.0  2500.0  3000.0  3100.0  3200.0
+1700.0  2000.0  2500.0  2900.0  3100.0  3200.0
+1800.0  2100.0  2600.0  2900.0  3200.0  3300.0
+1900.0  2100.0  2600.0  2900.0  3200.0  3300.0
+1700.0  2100.0  2500.0  2900.0  3100.0  3300.0
+1800.0  2100.0  2500.0  2900.0  3100.0  3200.0
+1600.0  2000.0  2300.0  2700.0  3100.0  3300.0
+1700.0  1900.0  2100.0  2600.0  2900.0  3100.0
+1800.0  2000.0  2200.0  2700.0  3000.0  3200.0
+2000.0  2100.0  2300.0  2600.0  3100.0  3200.0
+1800.0  2100.0  2300.0  2700.0  3200.0  3300.0
+1700.0  2100.0  2300.0  2700.0  3000.0  3200.0
+1600.0  2200.0  2400.0  2800.0  3200.0  3300.0
+1600.0  1700.0  2000.0  2300.0  2700.0  3100.0
+1800.0  2000.0  2200.0  2400.0  2700.0  3100.0
+1700.0  1800.0  2100.0  2400.0  2700.0  3000.0
+1500.0  1600.0  2200.0  2500.0  2800.0  3300.0
+1500.0  1600.0  2100.0  2500.0  2700.0  3000.0
+1500.0  2000.0  2300.0  2500.0  2700.0  2900.0
+1700.0  2100.0  2300.0  2600.0  2800.0  3000.0
+1700.0  2200.0  2400.0  2700.0  3000.0  3100.0
+1500.0  2200.0  2400.0  2600.0  3000.0  3200.0
+1500.0  2100.0  2400.0  2600.0  3100.0  3200.0
+1600.0  2100.0  2400.0  2600.0  3000.0  3200.0
+1500.0  2100.0  2300.0  2600.0  3000.0  3100.0
+1600.0  2000.0  2300.0  2700.0  3000.0  3100.0
+1600.0  1900.0  2200.0  2600.0  3100.0  3200.0
+1500.0  1800.0  2000.0  2500.0  3100.0  3200.0
+1600.0  1800.0  2000.0  2500.0  3100.0  3200.0
+1500.0  1700.0  2000.0  2300.0  3000.0  3100.0
+1400.0  1800.0  2100.0  2400.0  2900.0  3100.0
+1600.0  1900.0  2200.0  2500.0  3100.0  3200.0
+1600.0  1900.0  2200.0  2500.0  3000.0  3200.0
+1600.0  1800.0  2200.0  2800.0  3100.0  3200.0
+1500.0  1800.0  2100.0  2600.0  3000.0  3100.0
+1600.0  1800.0  2100.0  2600.0  2900.0  3100.0
+1600.0  1900.0  2100.0  2500.0  2900.0  3100.0
+1600.0  1900.0  2100.0  2600.0  2900.0  3100.0
+1600.0  1900.0  2100.0  2600.0  2800.0  3100.0
+1600.0  1800.0  2200.0  2600.0  2800.0  3000.0
+1600.0  1900.0  2200.0  2700.0  2900.0  3100.0
+1600.0  1900.0  2200.0  2600.0  2900.0  3000.0
+1900.0  2000.0  2200.0  2800.0  3000.0  3100.0
+1400.0  1900.0  2100.0  2500.0  3100.0  3200.0
+1400.0  1900.0  2100.0  2400.0  3100.0  3200.0
+1500.0  1800.0  2100.0  2400.0  3200.0  3300.0
+1500.0  1700.0  2100.0  2300.0  3100.0  3300.0
+1400.0  1700.0  2100.0  2300.0  3200.0  3300.0
+1400.0  1600.0  2100.0  2300.0  3200.0  3300.0
+1300.0  1600.0  2100.0  2300.0  3200.0  3300.0
+1300.0  1600.0  2100.0  2300.0  3100.0  3300.0
+1200.0  1400.0  2000.0  2200.0  3100.0  3300.0
+1200.0  1400.0  2000.0  2600.0  3100.0  3200.0
+1200.0  1400.0  2000.0  2800.0  3100.0  3200.0
+1200.0  1400.0  2100.0  2800.0  3100.0  3200.0
+1400.0  1500.0  2200.0  2700.0  3000.0  3100.0
+1700.0  1900.0  2200.0  2500.0  2900.0  3200.0
+1400.0  1600.0  2200.0  2700.0  2900.0  3100.0
+1500.0  1600.0  1900.0  2700.0  2900.0  3000.0
+1500.0  1600.0  1900.0  2700.0  3000.0  3100.0
+1500.0  1600.0  2000.0  2700.0  3000.0  3100.0
+1400.0  1600.0  2000.0  2600.0  2900.0  3100.0
+1300.0  1500.0  2400.0  2700.0  2900.0  3200.0
+1600.0  1800.0  2300.0  2700.0  3100.0  3400.0
+1600.0  2100.0  2400.0  2800.0  3100.0  3200.0
+1700.0  1800.0  2100.0  2700.0  3000.0  3100.0
+1600.0  1900.0  2100.0  2700.0  3000.0  3100.0
+1600.0  1800.0  2100.0  2700.0  3000.0  3100.0
+1700.0  1800.0  2300.0  2800.0  3100.0  3200.0
+1800.0  1900.0  2400.0  2900.0  3100.0  3200.0
+1500.0  1700.0  1800.0  2600.0  3000.0  3100.0
+1700.0  1800.0  2200.0  2800.0  3000.0  3200.0
+1800.0  2100.0  2600.0  2900.0  3100.0  3300.0
+1700.0  2300.0  2500.0  2700.0  3100.0  3200.0
+2000.0  2400.0  2500.0  2700.0  3100.0  3200.0
+1900.0  2500.0  2600.0  2800.0  3100.0  3200.0
+1800.0  2400.0  2700.0  2900.0  3200.0  3300.0
+1900.0  2400.0  2600.0  2800.0  3100.0  3200.0
+1700.0  2200.0  2500.0  2700.0  3100.0  3200.0
+1800.0  2200.0  2300.0  2600.0  3100.0  3200.0
+1800.0  2200.0  2300.0  2700.0  3100.0  3200.0
+1800.0  2200.0  2400.0  2800.0  3100.0  3300.0
+1900.0  2100.0  2500.0  2900.0  3300.0  3400.0
+1900.0  2100.0  2400.0  2900.0  3100.0  3200.0
+1900.0  2200.0  2400.0  2800.0  3000.0  3100.0
+1800.0  2200.0  2500.0  2700.0  3100.0  3200.0
+1800.0  2300.0  2500.0  2800.0  3100.0  3200.0
+1800.0  2300.0  2400.0  2800.0  3100.0  3200.0
+1800.0  2100.0  2300.0  2700.0  2900.0  3100.0
+1700.0  2000.0  2500.0  2800.0  3000.0  3300.0
+1100.0  1300.0  2300.0  2600.0  2800.0  3200.0
+1400.0  1600.0  2200.0  2500.0  2800.0  3100.0
+1400.0  1600.0  2000.0  2500.0  2700.0  3000.0
+1400.0  1500.0  1900.0  2500.0  2800.0  2900.0
+1400.0  1500.0  1900.0  2600.0  2900.0  3000.0
+1400.0  1600.0  1900.0  2700.0  2900.0  3000.0
+1500.0  1600.0  2000.0  2700.0  2900.0  3100.0
+1500.0  1600.0  2000.0  2700.0  2900.0  3000.0
+1500.0  1600.0  2100.0  2800.0  3000.0  3100.0
+1600.0  1700.0  2100.0  2800.0  3000.0  3100.0
+1900.0  2200.0  2600.0  2900.0  3300.0  3400.0
+2000.0  2200.0  2600.0  3000.0  3300.0  3400.0
+2000.0  2200.0  2600.0  3000.0  3200.0  3300.0
+1800.0  2100.0  2700.0  3000.0  3400.0  3500.0
+1300.0  1600.0  2300.0  2500.0  3000.0  3300.0
+1400.0  1700.0  2400.0  2500.0  2800.0  2900.0
+1400.0  1700.0  2400.0  2500.0  2800.0  3000.0
+1500.0  2000.0  2400.0  2500.0  3100.0  3200.0
+1400.0  1800.0  2400.0  2500.0  3100.0  3200.0
+1400.0  1500.0  2400.0  2500.0  3100.0  3300.0
+1900.0  2200.0  2600.0  2900.0  3200.0  3400.0
+1600.0  2000.0  2600.0  2700.0  3300.0  3400.0
+1800.0  2200.0  2800.0  3100.0  3400.0  3500.0
+1900.0  2200.0  2700.0  3000.0  3400.0  3500.0
+1900.0  2400.0  2800.0  3000.0  3200.0  3400.0
+1300.0  1900.0  2100.0  2400.0  2800.0  3000.0
+1800.0  2100.0  2300.0  2500.0  2800.0  3100.0
+1800.0  2100.0  2400.0  2600.0  2900.0  3100.0
+1600.0  1800.0  2500.0  2600.0  2900.0  3000.0
+1700.0  1900.0  2200.0  2400.0  2900.0  3200.0
+1600.0  1800.0  2000.0  2300.0  3000.0  3200.0
+1600.0  1700.0  1900.0  2300.0  3100.0  3300.0
+1400.0  1600.0  1800.0  2200.0  3200.0  3300.0
+1400.0  1600.0  1800.0  2300.0  3100.0  3200.0
+1400.0  1600.0  1800.0  2300.0  3000.0  3200.0
+1100.0  2200.0  2500.0  2600.0  2700.0  2900.0
+1200.0  1900.0  2500.0  2600.0  2800.0  3000.0
+1200.0  1800.0  2500.0  2600.0  2800.0  2900.0
+1300.0  1900.0  2500.0  2600.0  2800.0  3100.0
+1500.0  2100.0  2400.0  2500.0  2900.0  3200.0
+1400.0  2100.0  2400.0  2500.0  3000.0  3200.0
+1400.0  2000.0  2400.0  2500.0  3000.0  3300.0
+1300.0  1700.0  2300.0  2400.0  3200.0  3400.0
+1700.0  1900.0  2400.0  2500.0  3000.0  3300.0
+1900.0  2000.0  2500.0  2600.0  2900.0  3200.0
+1900.0  2100.0  2500.0  2700.0  2900.0  3200.0
+2000.0  2100.0  2600.0  2700.0  3000.0  3200.0
+2000.0  2100.0  2600.0  2700.0  3000.0  3300.0
+1900.0  2100.0  2500.0  2600.0  2900.0  3200.0
+1800.0  1900.0  2500.0  2700.0  3100.0  3400.0
+1600.0  2100.0  2400.0  2600.0  3100.0  3300.0
+1700.0  1800.0  2500.0  2600.0  2900.0  3300.0
+1500.0  1900.0  2400.0  2500.0  2800.0  3200.0
+1500.0  2000.0  2400.0  2500.0  2700.0  3000.0
+2100.0  2400.0  2700.0  3000.0  3300.0  3400.0
+1900.0  2200.0  2600.0  2800.0  3100.0  3400.0
+1800.0  2100.0  2600.0  2700.0  3100.0  3400.0
+1800.0  2000.0  2300.0  2500.0  2800.0  3200.0
+1700.0  2100.0  2200.0  2600.0  2900.0  3100.0
+1400.0  2100.0  2200.0  2600.0  2900.0  3100.0
+1500.0  1700.0  2100.0  2400.0  2800.0  3000.0
+1500.0  2000.0  2400.0  2600.0  3000.0  3200.0
+1500.0  1800.0  2400.0  2500.0  3000.0  3200.0
+1500.0  1700.0  2400.0  2500.0  3000.0  3300.0
+1700.0  2100.0  2500.0  2600.0  3200.0  3400.0
+1800.0  2300.0  2500.0  2800.0  3200.0  3300.0
+1800.0  2300.0  2600.0  2900.0  3200.0  3300.0
+1900.0  2300.0  2600.0  3000.0  3300.0  3400.0
+1800.0  1900.0  2300.0  2400.0  2700.0  3100.0
+1600.0  1800.0  2200.0  2500.0  2900.0  3200.0
+1700.0  1900.0  2400.0  2700.0  3100.0  3400.0
+1800.0  2200.0  2400.0  2800.0  3200.0  3400.0
+1900.0  2200.0  2800.0  3000.0  3300.0  3400.0
+2300.0  2600.0  2700.0  2900.0  3200.0  3300.0
+1700.0  2100.0  2500.0  2600.0  3100.0  3300.0
+1700.0  1900.0  2400.0  2500.0  2900.0  3100.0
+1900.0  2100.0  2400.0  2500.0  2900.0  3200.0
+2000.0  2100.0  2400.0  2500.0  2900.0  3200.0
+2000.0  2100.0  2500.0  2600.0  3000.0  3200.0
+2000.0  2200.0  2500.0  2600.0  3000.0  3300.0
+2000.0  2200.0  2600.0  2700.0  2900.0  3100.0
+1700.0  2000.0  2600.0  2700.0  3000.0  3100.0
+1900.0  2200.0  2700.0  2800.0  3100.0  3200.0
+1900.0  2400.0  2700.0  2800.0  3200.0  3300.0
+2100.0  2400.0  2600.0  2800.0  3100.0  3300.0
+2200.0  2500.0  2700.0  2900.0  3200.0  3300.0
+2000.0  2400.0  2800.0  3000.0  3300.0  3400.0
+1300.0  2000.0  2300.0  2400.0  3200.0  3300.0
+1400.0  1800.0  2200.0  2500.0  3000.0  3200.0
+1300.0  1600.0  2100.0  2500.0  2900.0  3200.0
+1300.0  1500.0  2100.0  2400.0  2900.0  3200.0
+1500.0  1700.0  1800.0  2200.0  2600.0  3200.0
+1500.0  1900.0  2200.0  2400.0  2800.0  3100.0
+1300.0  1600.0  2200.0  2300.0  3200.0  3400.0
+1300.0  1700.0  2200.0  2400.0  3100.0  3300.0
+1500.0  2100.0  2300.0  2700.0  3200.0  3400.0
+2000.0  2300.0  2800.0  3000.0  3300.0  3400.0
+1800.0  2300.0  2800.0  3000.0  3400.0  3500.0
+1800.0  2300.0  2700.0  3000.0  3300.0  3500.0
+2000.0  2500.0  2800.0  3100.0  3400.0  3500.0
+2000.0  2500.0  2800.0  3100.0  3300.0  3400.0
+2000.0  2400.0  2800.0  3100.0  3300.0  3400.0
+2100.0  2500.0  2800.0  2900.0  3300.0  3400.0
+2000.0  2300.0  2800.0  2900.0  3200.0  3300.0
+2000.0  2300.0  2700.0  2800.0  3100.0  3200.0
+1900.0  2200.0  2500.0  2700.0  3100.0  3200.0
+1600.0  2200.0  2400.0  2600.0  2900.0  3100.0
+1500.0  2200.0  2400.0  2600.0  2900.0  3200.0
+1400.0  1900.0  2200.0  2400.0  2700.0  3000.0
+1400.0  1900.0  2300.0  2500.0  2800.0  3100.0
+1600.0  1900.0  2400.0  2500.0  2800.0  3000.0
+1600.0  1800.0  2400.0  2600.0  2900.0  3000.0
+1600.0  1900.0  2500.0  2600.0  2900.0  3100.0
+1600.0  1900.0  2400.0  2500.0  3000.0  3100.0
+1600.0  2000.0  2400.0  2600.0  3000.0  3200.0
+1400.0  2100.0  2300.0  2600.0  3100.0  3200.0
+1400.0  1900.0  2200.0  2500.0  3000.0  3100.0
+1400.0  1800.0  2000.0  2400.0  3000.0  3100.0
+1400.0  1700.0  1900.0  2400.0  2800.0  2900.0
+1700.0  2100.0  2400.0  2600.0  3000.0  3300.0
+1900.0  2100.0  2500.0  2600.0  3000.0  3300.0
+1900.0  2100.0  2400.0  2500.0  2800.0  3200.0
+1800.0  2000.0  2300.0  2400.0  2900.0  3300.0
+1600.0  1800.0  2000.0  2300.0  2700.0  3200.0
+1300.0  1500.0  2100.0  2500.0  3000.0  3200.0
+1400.0  2000.0  2200.0  2400.0  2900.0  3200.0
+1800.0  1900.0  2300.0  2600.0  3000.0  3300.0
+1900.0  2000.0  2300.0  2500.0  3000.0  3100.0
+1900.0  2000.0  2300.0  2400.0  2800.0  3100.0
+1700.0  2000.0  2400.0  2500.0  2800.0  3000.0
+1600.0  2100.0  2500.0  2700.0  3100.0  3200.0
+1900.0  2200.0  2400.0  2700.0  3000.0  3200.0
+1900.0  2100.0  2300.0  2500.0  2800.0  3000.0
+1700.0  2000.0  2300.0  2500.0  2900.0  3100.0
+1700.0  2100.0  2300.0  2500.0  2900.0  3100.0
+1500.0  1700.0  1900.0  2500.0  2800.0  3100.0
+1600.0  1800.0  2000.0  2500.0  2700.0  3000.0
+1700.0  1800.0  2100.0  2500.0  2700.0  2900.0
+2000.0  2300.0  2700.0  2900.0  3100.0  3200.0
+2000.0  2300.0  2600.0  2900.0  3100.0  3200.0
+1600.0  2000.0  2500.0  2600.0  3100.0  3200.0
+1600.0  2100.0  2400.0  2500.0  2800.0  3000.0
+1400.0  2000.0  2400.0  2500.0  2900.0  3100.0
+1500.0  2000.0  2400.0  2500.0  3100.0  3300.0
+1700.0  2100.0  2500.0  2800.0  3300.0  3500.0
+1500.0  1600.0  2300.0  2500.0  2800.0  3100.0
+1500.0  1800.0  2300.0  2500.0  2700.0  2900.0
+1400.0  2000.0  2300.0  2400.0  2700.0  3100.0
+1400.0  2100.0  2400.0  2500.0  2800.0  3200.0
+1400.0  2100.0  2400.0  2500.0  2900.0  3200.0
+1800.0  2000.0  2300.0  2400.0  3000.0  3300.0
+1900.0  2200.0  2500.0  2600.0  2900.0  3100.0
+1800.0  2200.0  2600.0  2900.0  3100.0  3200.0
+2100.0  2500.0  2700.0  2800.0  3200.0  3300.0
+1900.0  2400.0  2600.0  2700.0  3200.0  3300.0
+1900.0  2100.0  2600.0  2700.0  3100.0  3200.0
+1800.0  2000.0  2500.0  2600.0  2900.0  3100.0
+1800.0  2100.0  2500.0  2600.0  2900.0  3100.0
+1900.0  2100.0  2500.0  2600.0  2900.0  3100.0
+1900.0  2100.0  2400.0  2500.0  2900.0  3100.0
+1900.0  2200.0  2300.0  2500.0  2900.0  3200.0
+1800.0  2200.0  2400.0  2600.0  3000.0  3100.0
+1800.0  2200.0  2400.0  2700.0  3000.0  3100.0
+1700.0  2000.0  2300.0  2800.0  3200.0  3400.0
+1600.0  2100.0  2300.0  2700.0  3200.0  3400.0
+1800.0  2200.0  2600.0  2700.0  3000.0  3200.0
+1900.0  2200.0  2600.0  3000.0  3200.0  3400.0
+2000.0  2400.0  2900.0  3000.0  3300.0  3500.0
+2100.0  2500.0  2800.0  2900.0  3400.0  3500.0
+2100.0  2600.0  2800.0  3000.0  3300.0  3400.0
+2300.0  2600.0  2800.0  3000.0  3200.0  3300.0
+2200.0  2500.0  2600.0  2800.0  3200.0  3300.0
+2200.0  2400.0  2600.0  2700.0  3200.0  3300.0
+2100.0  2300.0  2500.0  2700.0  3100.0  3300.0
+2100.0  2300.0  2500.0  2800.0  3000.0  3200.0
+1900.0  2100.0  2200.0  2500.0  3000.0  3200.0
+1700.0  2000.0  2400.0  2600.0  3000.0  3200.0
+1900.0  2200.0  2700.0  3000.0  3200.0  3300.0
+2000.0  2300.0  2900.0  3000.0  3300.0  3400.0
+2100.0  2400.0  2800.0  3000.0  3300.0  3400.0
+2000.0  2500.0  2800.0  2900.0  3300.0  3400.0
+2100.0  2600.0  2800.0  2900.0  3300.0  3400.0
+1800.0  2100.0  2700.0  2900.0  3200.0  3300.0
+1800.0  2200.0  2600.0  2800.0  3100.0  3300.0
+1700.0  2000.0  2400.0  2500.0  2700.0  2900.0
+1500.0  1800.0  2400.0  2600.0  2900.0  3200.0
+1500.0  2000.0  2400.0  2500.0  2800.0  3000.0
+1500.0  1900.0  2400.0  2500.0  2700.0  3000.0
+1500.0  2000.0  2400.0  2600.0  2800.0  3100.0
+1500.0  1800.0  2500.0  2600.0  3000.0  3300.0
+1500.0  2100.0  2400.0  2500.0  3000.0  3300.0
+1600.0  2100.0  2400.0  2600.0  3000.0  3300.0
+1600.0  2000.0  2400.0  2600.0  2800.0  3100.0
+1900.0  2300.0  2700.0  2900.0  3300.0  3400.0
+1800.0  2300.0  2700.0  3100.0  3300.0  3400.0
+2000.0  2100.0  2300.0  2700.0  3000.0  3300.0
+2100.0  2300.0  2600.0  2700.0  3100.0  3300.0
+2100.0  2300.0  2500.0  2700.0  3200.0  3300.0
+2100.0  2300.0  2600.0  2800.0  3200.0  3300.0
+1600.0  2100.0  2400.0  2600.0  3100.0  3200.0
+1500.0  2100.0  2500.0  2600.0  3000.0  3100.0
+1600.0  2100.0  2300.0  2600.0  3100.0  3300.0
+1800.0  2100.0  2500.0  2600.0  3000.0  3300.0
+1600.0  1800.0  2500.0  2700.0  3100.0  3200.0
+1500.0  1800.0  2500.0  2700.0  3100.0  3200.0
+1500.0  1800.0  2400.0  2600.0  2900.0  3100.0
+1700.0  2100.0  2500.0  2800.0  3000.0  3200.0
+1600.0  1800.0  2300.0  2700.0  3000.0  3300.0
+1600.0  1800.0  2200.0  2700.0  3100.0  3300.0
+1600.0  1700.0  2100.0  2700.0  3100.0  3200.0
+1600.0  1700.0  2300.0  2600.0  3100.0  3300.0
+1400.0  1600.0  2200.0  2500.0  3100.0  3300.0
+1400.0  1600.0  2100.0  2300.0  3100.0  3300.0
+1400.0  1600.0  2100.0  2300.0  3200.0  3400.0
+1300.0  1600.0  2100.0  2200.0  3200.0  3300.0
+1300.0  1700.0  2200.0  2400.0  3200.0  3400.0
+1300.0  1600.0  2200.0  2300.0  3100.0  3400.0
+1400.0  1600.0  2200.0  2300.0  2900.0  3300.0
+1400.0  1600.0  2200.0  2400.0  2900.0  3300.0
+1300.0  1500.0  2200.0  2400.0  3000.0  3300.0
+1300.0  1500.0  2200.0  2400.0  3100.0  3300.0
+1200.0  1500.0  2200.0  2400.0  3100.0  3300.0
+1200.0  1700.0  2300.0  2500.0  3200.0  3300.0
+1800.0  2000.0  2300.0  2400.0  3200.0  3400.0
+2000.0  2100.0  2400.0  2500.0  3000.0  3400.0
+2000.0  2200.0  2500.0  2700.0  3200.0  3400.0
+2000.0  2500.0  2700.0  2900.0  3400.0  3500.0
+1700.0  2000.0  2500.0  2600.0  3000.0  3300.0
+1600.0  1700.0  2100.0  2400.0  2800.0  3200.0
+1400.0  1600.0  2200.0  2300.0  3000.0  3400.0
+1300.0  1500.0  2200.0  2300.0  2800.0  3200.0
+1500.0  1700.0  2400.0  2500.0  3000.0  3200.0
+1600.0  1700.0  2400.0  2500.0  3000.0  3300.0
+1700.0  1800.0  2400.0  2500.0  2900.0  3200.0
+1800.0  1900.0  2400.0  2500.0  2900.0  3100.0
+1700.0  1900.0  2400.0  2500.0  2900.0  3200.0
+1500.0  1700.0  2300.0  2400.0  3100.0  3400.0
+1400.0  1600.0  2200.0  2400.0  2800.0  3100.0
+1400.0  1600.0  2200.0  2400.0  2800.0  3200.0
+1400.0  1600.0  2100.0  2300.0  2800.0  3200.0
+1500.0  1600.0  2100.0  2400.0  2700.0  3100.0
+1600.0  1700.0  2200.0  2400.0  2800.0  3100.0
+1600.0  2200.0  2500.0  2700.0  3300.0  3400.0
+1500.0  2000.0  2500.0  2900.0  3300.0  3400.0
+1400.0  2000.0  2400.0  2800.0  3200.0  3400.0
+1400.0  1700.0  2300.0  2600.0  3000.0  3200.0
+1300.0  1600.0  2300.0  2400.0  3100.0  3200.0
+1300.0  1600.0  2300.0  2400.0  3000.0  3200.0
+1200.0  1500.0  2200.0  2300.0  3000.0  3300.0
+1300.0  1700.0  2300.0  2400.0  3100.0  3300.0
+1300.0  1600.0  2300.0  2400.0  3000.0  3300.0
+1300.0  1700.0  2300.0  2400.0  3000.0  3300.0
+1300.0  1600.0  2200.0  2300.0  3000.0  3300.0
+1300.0  1600.0  2200.0  2300.0  3100.0  3300.0
+1300.0  1400.0  2200.0  2300.0  3000.0  3300.0
+1300.0  1600.0  2200.0  2400.0  3100.0  3300.0
+1400.0  1800.0  2200.0  2300.0  3200.0  3300.0
+1400.0  1600.0  2300.0  2400.0  3200.0  3400.0
+1400.0  1600.0  2300.0  2400.0  3100.0  3400.0
+1400.0  1600.0  2300.0  2400.0  3000.0  3400.0
+1400.0  1500.0  2400.0  2500.0  3000.0  3300.0
+1400.0  1900.0  2300.0  2700.0  3200.0  3300.0
+1600.0  1800.0  2200.0  2300.0  3200.0  3300.0
+1600.0  1800.0  2200.0  2300.0  3200.0  3400.0
+1400.0  1600.0  2100.0  2400.0  3100.0  3400.0
+1600.0  1900.0  2200.0  2500.0  2800.0  3100.0
+1500.0  1800.0  2200.0  2300.0  3000.0  3200.0
+1600.0  1700.0  2200.0  2400.0  3000.0  3200.0
+1700.0  1800.0  2300.0  2400.0  2900.0  3200.0
+1800.0  1900.0  2400.0  2500.0  2800.0  3100.0
+2000.0  2100.0  2500.0  2600.0  3100.0  3300.0
+2000.0  2100.0  2400.0  2500.0  3000.0  3300.0
+1800.0  2100.0  2400.0  2600.0  3200.0  3400.0
+1600.0  1900.0  2300.0  2500.0  3000.0  3300.0
+1400.0  1700.0  2200.0  2300.0  3000.0  3300.0
+1400.0  1700.0  2100.0  2200.0  3200.0  3300.0
+1700.0  1800.0  2200.0  2300.0  3100.0  3200.0
+1900.0  2200.0  2400.0  2500.0  2900.0  3100.0
+1400.0  1600.0  2200.0  2600.0  3100.0  3300.0
+1400.0  1700.0  2300.0  2700.0  3100.0  3300.0
+1500.0  1900.0  2300.0  2600.0  3200.0  3400.0
+1200.0  1600.0  2400.0  2500.0  3100.0  3200.0
+1200.0  2000.0  2400.0  2600.0  3300.0  3400.0
+1700.0  1800.0  2100.0  2300.0  2900.0  3000.0
+1800.0  1900.0  2200.0  2300.0  2900.0  3000.0
+1900.0  2000.0  2500.0  2600.0  3100.0  3200.0
+1700.0  1900.0  2300.0  2600.0  3200.0  3300.0
+1800.0  2100.0  2500.0  2600.0  3300.0  3400.0
+1700.0  2300.0  2500.0  2900.0  3200.0  3300.0
+1900.0  2400.0  2800.0  3000.0  3300.0  3400.0
+1600.0  1800.0  2400.0  2500.0  3000.0  3400.0
+1700.0  1800.0  2400.0  2500.0  3100.0  3400.0
+1600.0  2000.0  2200.0  2600.0  3200.0  3300.0
+1500.0  2100.0  2500.0  2800.0  3200.0  3300.0
+1500.0  2000.0  2500.0  2800.0  3300.0  3400.0
+1800.0  2000.0  2500.0  2900.0  3300.0  3400.0
+1500.0  2100.0  2400.0  2800.0  3300.0  3400.0
+1300.0  2000.0  2400.0  2500.0  3300.0  3400.0
+1600.0  1700.0  2200.0  2400.0  3200.0  3300.0
+1600.0  1700.0  2200.0  2300.0  3200.0  3300.0
+1600.0  1800.0  2200.0  2400.0  3200.0  3300.0
+1600.0  1700.0  2200.0  2400.0  2900.0  3300.0
+1500.0  1700.0  2300.0  2400.0  2900.0  3100.0
+1400.0  1800.0  2500.0  2600.0  3000.0  3200.0
+1300.0  1600.0  2400.0  2500.0  3100.0  3300.0
+1300.0  1500.0  2400.0  2500.0  3000.0  3400.0
+1300.0  1500.0  2500.0  2600.0  3000.0  3300.0
+1300.0  1500.0  2400.0  2500.0  2800.0  3300.0
+1400.0  1500.0  2500.0  2600.0  2900.0  3300.0
+1800.0  2200.0  2700.0  2900.0  3200.0  3300.0
+1600.0  1700.0  2400.0  2500.0  2900.0  3300.0
+1600.0  1700.0  2300.0  2500.0  2800.0  3300.0
+1700.0  1800.0  2200.0  2400.0  3100.0  3200.0
+1600.0  1700.0  2200.0  2300.0  3100.0  3200.0
+1600.0  1800.0  2200.0  2400.0  3100.0  3200.0
+1500.0  1800.0  2100.0  2300.0  3100.0  3200.0
+1400.0  1800.0  2200.0  2400.0  2900.0  3200.0
+1500.0  2000.0  2200.0  2400.0  2700.0  3200.0
+1600.0  1900.0  2200.0  2400.0  2800.0  3200.0
+1700.0  1800.0  2400.0  2500.0  3300.0  3500.0
+1500.0  1800.0  2300.0  2600.0  3200.0  3400.0
+1300.0  1600.0  2200.0  2400.0  3200.0  3400.0
+1200.0  1600.0  2200.0  2400.0  3100.0  3300.0
+1100.0  1500.0  2100.0  2300.0  3100.0  3200.0
+1400.0  1700.0  2100.0  2400.0  3100.0  3200.0
+1500.0  1600.0  2100.0  2400.0  3100.0  3200.0
+1600.0  1700.0  2100.0  2300.0  2900.0  3000.0
+1600.0  1700.0  2100.0  2400.0  2900.0  3100.0
+1600.0  1700.0  2100.0  2400.0  3100.0  3200.0
+1600.0  1700.0  2100.0  2300.0  3100.0  3200.0
+1700.0  1800.0  2100.0  2300.0  3200.0  3300.0
+1700.0  1900.0  2100.0  2300.0  3200.0  3400.0
+1800.0  1900.0  2100.0  2300.0  3200.0  3400.0
+1700.0  1900.0  2200.0  2400.0  3100.0  3200.0
+1600.0  1700.0  2200.0  2300.0  3000.0  3200.0
+1600.0  1700.0  2200.0  2300.0  2700.0  3100.0
+1600.0  1700.0  2100.0  2300.0  2500.0  3000.0
+1500.0  1800.0  2300.0  2500.0  2900.0  3100.0
+1500.0  2000.0  2300.0  2600.0  3100.0  3200.0
+1500.0  2000.0  2500.0  2900.0  3200.0  3300.0
+1700.0  2400.0  2900.0  3100.0  3300.0  3400.0
+1700.0  2100.0  2400.0  2800.0  3300.0  3400.0
+1800.0  2400.0  2600.0  2800.0  3100.0  3300.0
+1200.0  1600.0  2400.0  2500.0  3100.0  3400.0
+1300.0  1500.0  2400.0  2500.0  3100.0  3400.0
+1400.0  1500.0  2400.0  2500.0  3000.0  3200.0
+1400.0  1600.0  2400.0  2500.0  3000.0  3200.0
+1800.0  2100.0  2500.0  2600.0  3000.0  3200.0
+1700.0  2200.0  2500.0  2800.0  3100.0  3300.0
+1600.0  1700.0  2300.0  2500.0  3100.0  3300.0
+1600.0  1700.0  2300.0  2500.0  3000.0  3200.0
+1400.0  2000.0  2400.0  2500.0  3200.0  3400.0
+1800.0  2100.0  2400.0  2500.0  3200.0  3400.0
+1800.0  1900.0  2200.0  2400.0  3100.0  3300.0
+1700.0  2000.0  2400.0  2600.0  3200.0  3400.0
+1600.0  1700.0  2300.0  2400.0  3100.0  3400.0
+1600.0  1700.0  2300.0  2400.0  3200.0  3400.0
+1200.0  1700.0  2400.0  2500.0  3200.0  3400.0
+1700.0  2200.0  2800.0  3100.0  3400.0  3500.0
+1600.0  2000.0  2400.0  2800.0  3300.0  3400.0
+1300.0  1600.0  2100.0  2300.0  3100.0  3200.0
+1300.0  1600.0  2100.0  2200.0  3100.0  3200.0
+1300.0  1500.0  1800.0  2000.0  3000.0  3100.0
+1300.0  1500.0  1800.0  1900.0  3100.0  3200.0
+1400.0  1500.0  1700.0  1800.0  3100.0  3200.0
+1400.0  1600.0  1700.0  2000.0  2800.0  2900.0
+1500.0  1700.0  2200.0  2400.0  2800.0  3200.0
+1500.0  1700.0  2200.0  2300.0  3100.0  3200.0
+1500.0  1700.0  2000.0  2200.0  3100.0  3200.0
+1300.0  1500.0  1800.0  2200.0  3100.0  3200.0
+1400.0  1800.0  2300.0  2500.0  2900.0  3200.0
+1400.0  1800.0  2300.0  2400.0  2700.0  3200.0
+1500.0  1600.0  2000.0  2500.0  2900.0  3200.0
+1500.0  1600.0  2000.0  2400.0  3100.0  3300.0
+1500.0  1700.0  2200.0  2500.0  2800.0  3200.0
+1700.0  1800.0  2200.0  2500.0  2800.0  3100.0
+1600.0  1700.0  2200.0  2500.0  2800.0  3100.0
+1700.0  1800.0  2200.0  2500.0  2900.0  3100.0
+1900.0  2000.0  2400.0  2600.0  3000.0  3200.0
+1500.0  1700.0  2200.0  2500.0  3000.0  3300.0
+1300.0  1500.0  2200.0  2400.0  3000.0  3400.0
+1200.0  1400.0  2200.0  2500.0  3200.0  3400.0
+1300.0  1600.0  2000.0  2200.0  3100.0  3200.0
+1400.0  1600.0  1900.0  2000.0  3000.0  3100.0
+1700.0  1800.0  2200.0  2400.0  2900.0  3100.0
+1500.0  1600.0  2200.0  2300.0  2800.0  3100.0
+1400.0  1600.0  2200.0  2300.0  2800.0  3100.0
+1300.0  1600.0  2300.0  2400.0  2900.0  3300.0
+1700.0  2200.0  2800.0  3100.0  3300.0  3400.0
+1700.0  2200.0  2600.0  3000.0  3300.0  3500.0
+1100.0  1500.0  2400.0  2500.0  3200.0  3300.0
+1500.0  2000.0  2300.0  2500.0  2700.0  3100.0
+1900.0  2100.0  2500.0  2600.0  3100.0  3300.0
+1900.0  2000.0  2300.0  2400.0  3000.0  3300.0
+1500.0  2100.0  2500.0  2800.0  3300.0  3400.0
+1600.0  2100.0  2500.0  2900.0  3300.0  3400.0
+1200.0  1600.0  2400.0  2500.0  2900.0  3400.0
+1300.0  1500.0  2300.0  2500.0  2700.0  3200.0
+1400.0  1600.0  2500.0  2600.0  3000.0  3300.0
+1300.0  1600.0  2400.0  2500.0  3100.0  3400.0
+1300.0  1800.0  2300.0  2500.0  3100.0  3300.0
+1300.0  1600.0  2300.0  2400.0  3100.0  3300.0
+1200.0  1600.0  2300.0  2400.0  3000.0  3300.0
+1100.0  1700.0  2200.0  2500.0  3100.0  3300.0
+1500.0  1600.0  2200.0  2600.0  3000.0  3300.0
+1500.0  1600.0  2200.0  2600.0  2900.0  3300.0
+1500.0  1700.0  2400.0  2600.0  2900.0  3300.0
+1500.0  1600.0  2300.0  2500.0  2900.0  3200.0
+1700.0  2100.0  2600.0  3000.0  3300.0  3400.0
+1600.0  1800.0  2400.0  2500.0  3100.0  3500.0
+1500.0  1600.0  2400.0  2500.0  3100.0  3400.0
+1500.0  1600.0  2500.0  2600.0  3100.0  3300.0
+1200.0  1500.0  1600.0  2000.0  3200.0  3400.0
+1900.0  2000.0  2300.0  2500.0  2900.0  3200.0
+2000.0  2500.0  2700.0  2800.0  3200.0  3300.0
+2000.0  2200.0  2500.0  2800.0  3100.0  3200.0
+1700.0  1800.0  2300.0  2700.0  2900.0  3100.0
+1700.0  1800.0  2400.0  2800.0  2900.0  3100.0
+1700.0  1800.0  2400.0  2800.0  3000.0  3100.0
+1700.0  1800.0  2300.0  2800.0  3000.0  3200.0
+1800.0  1900.0  2300.0  2800.0  3100.0  3200.0
+1400.0  1900.0  2200.0  2400.0  3000.0  3200.0
+2100.0  2300.0  2800.0  3000.0  3200.0  3300.0
+2100.0  2400.0  2900.0  3000.0  3200.0  3300.0
+1600.0  1800.0  2100.0  2600.0  3000.0  3100.0
+1700.0  1800.0  2300.0  2600.0  2900.0  3100.0
+1600.0  1700.0  2100.0  2600.0  2900.0  3100.0
+1700.0  1800.0  2100.0  2700.0  2900.0  3100.0
+1800.0  1900.0  2200.0  2700.0  3000.0  3100.0
+1900.0  2100.0  2300.0  2800.0  3100.0  3200.0
+2000.0  2400.0  2600.0  2900.0  3200.0  3300.0
+1300.0  1700.0  2400.0  2700.0  3100.0  3200.0
+1200.0  1500.0  2300.0  2400.0  3000.0  3200.0
+1100.0  1500.0  2300.0  2500.0  3100.0  3200.0
+2000.0  2300.0  2800.0  3000.0  3200.0  3300.0
+2100.0  2400.0  2900.0  3000.0  3300.0  3400.0
+2200.0  2500.0  2900.0  3100.0  3300.0  3400.0
+2300.0  2500.0  2900.0  3100.0  3300.0  3400.0
+2200.0  2500.0  2900.0  3100.0  3200.0  3300.0
+1900.0  2000.0  2400.0  2600.0  3200.0  3400.0
+1500.0  1800.0  2000.0  2300.0  3200.0  3400.0
+1700.0  1800.0  2000.0  2100.0  3200.0  3400.0
+1800.0  1900.0  2200.0  2300.0  3200.0  3400.0
+1900.0  2000.0  2500.0  2800.0  3000.0  3200.0
+1800.0  1900.0  2400.0  2800.0  3000.0  3200.0
+1800.0  1900.0  2500.0  2800.0  3200.0  3400.0
+1800.0  2300.0  2600.0  2800.0  3200.0  3400.0
+1500.0  1900.0  2600.0  2800.0  3100.0  3300.0
+1400.0  1500.0  2400.0  2700.0  2800.0  3100.0
+1400.0  1500.0  2300.0  2700.0  2800.0  3100.0
+1400.0  1500.0  2400.0  2800.0  2900.0  3100.0
+1300.0  1500.0  2300.0  2900.0  3100.0  3200.0
+1300.0  1500.0  2200.0  2900.0  3100.0  3300.0
+1500.0  1600.0  2000.0  2700.0  3200.0  3300.0
+1500.0  1600.0  2000.0  2400.0  3100.0  3200.0
+1700.0  1800.0  2200.0  2400.0  3000.0  3100.0
+1700.0  1800.0  2200.0  2400.0  2900.0  3200.0
+1700.0  1900.0  2100.0  2400.0  2900.0  3200.0
+2000.0  2400.0  2700.0  2900.0  3100.0  3200.0
+1900.0  2000.0  2400.0  2800.0  3100.0  3200.0
+1700.0  1900.0  2500.0  2800.0  3000.0  3200.0
+1100.0  1400.0  2500.0  2900.0  3100.0  3200.0
+2200.0  2500.0  2900.0  3000.0  3200.0  3400.0
+2100.0  2500.0  2900.0  3000.0  3200.0  3400.0
+1900.0  2100.0  2500.0  2900.0  3000.0  3200.0
+1900.0  2000.0  2400.0  2800.0  3000.0  3200.0
+1800.0  1900.0  2300.0  2800.0  3000.0  3100.0
+1700.0  1900.0  2200.0  2800.0  3000.0  3100.0
+1600.0  1900.0  2000.0  2500.0  2800.0  3000.0
+1300.0  1900.0  2100.0  2500.0  2900.0  3100.0
+1500.0  1900.0  2100.0  2600.0  2900.0  3100.0
+1100.0  1400.0  2500.0  2700.0  3000.0  3300.0
+1300.0  1600.0  2500.0  2700.0  2900.0  3300.0
+1500.0  1700.0  2500.0  2700.0  2900.0  3200.0
+1700.0  1900.0  2600.0  2700.0  3000.0  3200.0
+1800.0  1900.0  2500.0  2800.0  3000.0  3200.0
+1800.0  1900.0  2500.0  2800.0  2900.0  3200.0
+1900.0  2000.0  2400.0  2800.0  2900.0  3200.0
+1900.0  2000.0  2400.0  2800.0  3000.0  3100.0
+1900.0  2100.0  2500.0  2900.0  3100.0  3200.0
+1800.0  2100.0  2500.0  2800.0  3000.0  3200.0
+1500.0  1700.0  2100.0  2600.0  2900.0  3100.0
+1500.0  1700.0  2400.0  2800.0  3000.0  3200.0
+1500.0  1700.0  2400.0  2900.0  3100.0  3200.0
+1300.0  1800.0  2300.0  2600.0  3000.0  3300.0
+1200.0  1700.0  2500.0  2700.0  3000.0  3300.0
+1200.0  1500.0  2600.0  2700.0  3000.0  3300.0
+1300.0  1600.0  2600.0  2700.0  3000.0  3300.0
+1600.0  1800.0  2400.0  2600.0  2900.0  3200.0
+1700.0  1800.0  2500.0  2600.0  2800.0  3200.0
+1900.0  2000.0  2400.0  2700.0  2800.0  3100.0
+2000.0  2100.0  2500.0  2700.0  2800.0  3100.0
+1800.0  1900.0  2400.0  2700.0  2800.0  3100.0
+1700.0  1800.0  2400.0  2700.0  2800.0  3100.0
+1600.0  1700.0  2400.0  2700.0  2800.0  3100.0
+1500.0  1600.0  2400.0  2700.0  2800.0  3200.0
+1400.0  1600.0  2300.0  2600.0  2900.0  3200.0
+1300.0  1500.0  2400.0  2600.0  2800.0  3200.0
+1200.0  1400.0  2500.0  2600.0  2900.0  3200.0
+1300.0  1400.0  2200.0  2600.0  2800.0  3100.0
+1900.0  2100.0  2600.0  2800.0  3200.0  3400.0
+1900.0  2000.0  2500.0  2800.0  3200.0  3300.0
+1800.0  2100.0  2500.0  2700.0  2900.0  3100.0
+1600.0  2000.0  2400.0  2800.0  3000.0  3200.0
+1600.0  1900.0  2400.0  2800.0  3000.0  3300.0
+1800.0  1900.0  2300.0  2700.0  3000.0  3100.0
+1800.0  1900.0  2300.0  2700.0  2900.0  3000.0
+1700.0  1900.0  2200.0  2500.0  2900.0  3000.0
+1400.0  1900.0  2200.0  2500.0  2900.0  3100.0
+1500.0  1800.0  2200.0  2400.0  2900.0  3100.0
+1600.0  1900.0  2300.0  2500.0  3000.0  3200.0
+1800.0  2100.0  2300.0  2700.0  3100.0  3200.0
+1900.0  2300.0  2600.0  2800.0  3000.0  3200.0
+1500.0  1700.0  2300.0  2700.0  2900.0  3100.0
+1700.0  1800.0  2300.0  2800.0  3000.0  3100.0
+2000.0  2100.0  2400.0  2800.0  3100.0  3200.0
+2100.0  2400.0  2500.0  2800.0  3100.0  3200.0
+1900.0  2100.0  2500.0  2800.0  3000.0  3200.0
+1700.0  1800.0  2400.0  2800.0  3000.0  3200.0
+1300.0  1500.0  2200.0  2800.0  3100.0  3200.0
+1400.0  1500.0  2400.0  2800.0  2900.0  3200.0
+1400.0  1600.0  2500.0  2700.0  3000.0  3200.0
+1500.0  1600.0  2400.0  2700.0  3000.0  3200.0
+1600.0  1800.0  2400.0  2700.0  2900.0  3200.0
+1400.0  1600.0  2500.0  2600.0  3100.0  3300.0
+1200.0  1600.0  2600.0  2700.0  3100.0  3300.0
+1000.0  1800.0  2700.0  2800.0  3200.0  3400.0
+1100.0  1700.0  2400.0  2500.0  3200.0  3400.0
+1600.0  1800.0  2000.0  2200.0  3200.0  3400.0
+1800.0  1900.0  2200.0  2400.0  3000.0  3300.0
+1800.0  1900.0  2200.0  2600.0  3000.0  3200.0
+1800.0  1900.0  2300.0  2700.0  3000.0  3200.0
+1300.0  1500.0  2500.0  2800.0  3000.0  3300.0
+1700.0  2000.0  2500.0  2700.0  2900.0  3200.0
+2000.0  2200.0  2500.0  2700.0  2900.0  3200.0
+2200.0  2600.0  2700.0  2800.0  3100.0  3300.0
+2100.0  2600.0  2700.0  2900.0  3300.0  3400.0
+2200.0  2300.0  2600.0  2800.0  3000.0  3200.0
+1600.0  2200.0  2500.0  2700.0  3100.0  3200.0
+1600.0  2100.0  2400.0  2700.0  3100.0  3200.0
+1800.0  2000.0  2500.0  2900.0  3100.0  3200.0
+2200.0  2400.0  2600.0  2900.0  3100.0  3200.0
+2200.0  2500.0  2600.0  2800.0  3100.0  3200.0
+2300.0  2500.0  2600.0  2800.0  3200.0  3300.0
+2200.0  2500.0  2700.0  2800.0  3200.0  3300.0
+2200.0  2500.0  2700.0  2800.0  3100.0  3200.0
+2200.0  2400.0  2600.0  2800.0  3100.0  3200.0
+2000.0  2200.0  2400.0  2800.0  3000.0  3100.0
+1900.0  2000.0  2300.0  2800.0  3000.0  3200.0
+1700.0  2100.0  2300.0  2600.0  3000.0  3200.0
+1900.0  2200.0  2300.0  2600.0  3000.0  3100.0
+1800.0  2000.0  2200.0  2600.0  3000.0  3100.0
+1600.0  1900.0  2300.0  2500.0  2800.0  3000.0
+1700.0  1800.0  2300.0  2500.0  2800.0  2900.0
+1700.0  2100.0  2400.0  2700.0  3100.0  3200.0
+1400.0  1600.0  1700.0  2100.0  3200.0  3400.0
+1500.0  1800.0  2200.0  2300.0  3200.0  3500.0
+1300.0  1700.0  2300.0  2500.0  2900.0  3200.0
+1300.0  1500.0  2100.0  2500.0  2900.0  3200.0
+1700.0  2000.0  2200.0  2500.0  3000.0  3200.0
+1800.0  1900.0  2500.0  2700.0  2900.0  3200.0
+1700.0  1900.0  2400.0  2700.0  2900.0  3200.0
+1600.0  1700.0  2300.0  2600.0  2900.0  3200.0
+1400.0  1600.0  2300.0  2400.0  2800.0  3300.0
+1600.0  1700.0  2400.0  2700.0  3000.0  3300.0
+1600.0  1800.0  2400.0  2700.0  2900.0  3300.0
+1600.0  1800.0  2400.0  2800.0  3000.0  3200.0
+1600.0  1700.0  2100.0  2600.0  2900.0  3200.0
+1500.0  1700.0  2200.0  2500.0  2700.0  3200.0
+1700.0  2000.0  2400.0  2700.0  3000.0  3300.0
+1600.0  1700.0  2400.0  2700.0  3000.0  3200.0
+1500.0  1600.0  2300.0  2700.0  3100.0  3300.0
+1400.0  1600.0  2300.0  2700.0  3100.0  3300.0
+1400.0  1600.0  2200.0  2800.0  3100.0  3200.0
+1500.0  1600.0  2200.0  2800.0  3100.0  3200.0
+1500.0  1600.0  2100.0  2800.0  3100.0  3200.0
+1500.0  1600.0  2000.0  2600.0  3100.0  3200.0
+1600.0  1700.0  2200.0  2800.0  3100.0  3200.0
+1700.0  1900.0  2500.0  2900.0  3100.0  3300.0
+2300.0  2400.0  2600.0  2900.0  3200.0  3300.0
+2200.0  2300.0  2500.0  2800.0  3100.0  3300.0
+2000.0  2200.0  2400.0  2600.0  3000.0  3300.0
+1300.0  1800.0  2200.0  2400.0  3000.0  3300.0
+1500.0  1800.0  2300.0  2400.0  3100.0  3400.0
+1800.0  2100.0  2300.0  2600.0  3000.0  3200.0
+1900.0  2100.0  2300.0  2700.0  3000.0  3200.0
+1600.0  1900.0  2500.0  2600.0  3000.0  3300.0
+1600.0  1800.0  2500.0  2600.0  3000.0  3400.0
+1600.0  1900.0  2400.0  2500.0  3100.0  3400.0
+1600.0  1800.0  2300.0  2400.0  3100.0  3400.0
+1600.0  1800.0  2200.0  2300.0  3100.0  3400.0
+1600.0  1800.0  2000.0  2200.0  3100.0  3400.0
+1700.0  1800.0  2300.0  2600.0  3100.0  3200.0
+2200.0  2300.0  2500.0  2800.0  3100.0  3200.0
+1300.0  1800.0  2300.0  2500.0  3000.0  3200.0
+1300.0  1700.0  2300.0  2400.0  3000.0  3200.0
+1400.0  1800.0  2300.0  2400.0  3000.0  3100.0
+1200.0  1500.0  2600.0  2800.0  3000.0  3300.0
+2200.0  2400.0  2600.0  2800.0  3000.0  3200.0
+2000.0  2500.0  2600.0  2800.0  3100.0  3200.0
+1900.0  2400.0  2600.0  2700.0  3100.0  3200.0
+2000.0  2300.0  2400.0  2600.0  3000.0  3200.0
+1900.0  2200.0  2400.0  2800.0  3100.0  3300.0
+1800.0  2100.0  2300.0  2800.0  3100.0  3300.0
+1900.0  2100.0  2400.0  2600.0  3100.0  3200.0
+2000.0  2300.0  2500.0  2600.0  2900.0  3200.0
+1600.0  2100.0  2400.0  2600.0  2900.0  3300.0
+1400.0  1700.0  2400.0  2800.0  3000.0  3200.0
+1100.0  1700.0  2900.0  3000.0  3200.0  3400.0
+1100.0  1700.0  2300.0  2900.0  3300.0  3400.0
+1100.0  1500.0  2300.0  2400.0  3300.0  3500.0
+1400.0  1700.0  2200.0  2400.0  3000.0  3300.0
+1600.0  1800.0  2300.0  2600.0  2900.0  3300.0
+2000.0  2100.0  2400.0  2800.0  3000.0  3100.0
+1900.0  2000.0  2300.0  2700.0  3000.0  3100.0
+1600.0  1900.0  2100.0  2600.0  3000.0  3100.0
+1700.0  1800.0  2200.0  2600.0  3000.0  3300.0
+1500.0  1700.0  1900.0  2200.0  3200.0  3400.0
+1400.0  1600.0  1800.0  2100.0  3200.0  3400.0
+1300.0  1500.0  1600.0  2200.0  3300.0  3400.0
+1800.0  2000.0  2200.0  2400.0  3000.0  3300.0
+2100.0  2500.0  2700.0  2800.0  3100.0  3200.0
+2100.0  2400.0  2600.0  2800.0  3100.0  3200.0
+1300.0  1800.0  2200.0  2600.0  3000.0  3200.0
+1800.0  2200.0  2400.0  2800.0  3200.0  3300.0
+1700.0  2100.0  2300.0  2700.0  3100.0  3300.0
+1400.0  1600.0  2100.0  2200.0  3000.0  3300.0
+1500.0  1700.0  2100.0  2200.0  3100.0  3400.0
+1500.0  1700.0  2000.0  2200.0  3100.0  3400.0
+1700.0  1800.0  2100.0  2300.0  3100.0  3400.0
+1900.0  2000.0  2400.0  2600.0  3000.0  3100.0
+2100.0  2500.0  2800.0  2900.0  3200.0  3300.0
+1800.0  2200.0  2400.0  2700.0  3100.0  3200.0
+1700.0  2100.0  2300.0  2600.0  3000.0  3100.0
+1900.0  2100.0  2300.0  2700.0  3000.0  3100.0
+2000.0  2200.0  2500.0  2700.0  2900.0  3100.0
+1400.0  1700.0  2000.0  2600.0  3200.0  3300.0
+1400.0  1700.0  2200.0  2600.0  3200.0  3300.0
+1700.0  1900.0  2400.0  2900.0  3100.0  3200.0
+1700.0  1800.0  2100.0  2600.0  3000.0  3100.0
+1600.0  1900.0  2200.0  2500.0  2900.0  3000.0
+1600.0  1800.0  2000.0  2600.0  3000.0  3100.0
+1600.0  1800.0  2300.0  2700.0  2900.0  3100.0
+1500.0  1900.0  2200.0  2500.0  2600.0  3200.0
+1800.0  1900.0  2400.0  2800.0  2900.0  3200.0
+2000.0  2100.0  2400.0  2800.0  3000.0  3200.0
+2000.0  2300.0  2400.0  2700.0  3200.0  3300.0
+1900.0  2200.0  2400.0  2800.0  3200.0  3300.0
+1300.0  1800.0  2200.0  2600.0  3100.0  3300.0
+2000.0  2400.0  2800.0  3000.0  3200.0  3400.0
+2200.0  2300.0  2800.0  3000.0  3200.0  3300.0
+2100.0  2300.0  2600.0  3000.0  3200.0  3300.0
+2100.0  2200.0  2600.0  2900.0  3100.0  3200.0
+2100.0  2200.0  2500.0  2900.0  3100.0  3200.0
+1800.0  2100.0  2300.0  2800.0  3100.0  3200.0
+1800.0  2000.0  2200.0  2600.0  3100.0  3200.0
+2000.0  2100.0  2400.0  2900.0  3100.0  3200.0
+2200.0  2500.0  2800.0  3000.0  3200.0  3300.0
+2100.0  2400.0  2800.0  3000.0  3200.0  3400.0
+2000.0  2100.0  2500.0  2800.0  3100.0  3200.0
+2000.0  2100.0  2500.0  2900.0  3000.0  3200.0
+1800.0  1900.0  2200.0  2800.0  2900.0  3100.0
+1600.0  1900.0  2100.0  2500.0  2800.0  3000.0
+1700.0  1900.0  2200.0  2500.0  2800.0  3000.0
+2100.0  2400.0  2700.0  3000.0  3200.0  3400.0
+1700.0  1800.0  2300.0  2700.0  3000.0  3200.0
+1600.0  1700.0  2300.0  2800.0  3000.0  3200.0
+1600.0  1900.0  2300.0  2800.0  3100.0  3300.0
+1400.0  1600.0  1700.0  2100.0  3300.0  3400.0
+1600.0  1700.0  2000.0  2300.0  3200.0  3400.0
+1600.0  1800.0  2300.0  2700.0  2900.0  3200.0
+1600.0  1700.0  2300.0  2800.0  2900.0  3200.0
+1600.0  1800.0  2300.0  2800.0  3000.0  3100.0
+1700.0  1800.0  2200.0  2800.0  3000.0  3100.0
+1800.0  1900.0  2300.0  2600.0  2900.0  3300.0
+1700.0  1800.0  2300.0  2500.0  3000.0  3400.0
+1600.0  1700.0  2200.0  2400.0  3000.0  3400.0
+1600.0  1700.0  2200.0  2300.0  3000.0  3400.0
+2000.0  2100.0  2300.0  2400.0  3000.0  3300.0
+2200.0  2500.0  2700.0  2900.0  3200.0  3400.0
+2000.0  2500.0  2600.0  2800.0  3200.0  3300.0
+2100.0  2500.0  2600.0  2900.0  3200.0  3300.0
+1700.0  1900.0  2200.0  2700.0  3000.0  3100.0
+1900.0  2000.0  2300.0  2800.0  3000.0  3100.0
+1700.0  2000.0  2300.0  2700.0  3000.0  3200.0
+2000.0  2100.0  2500.0  2800.0  3000.0  3100.0
+1400.0  1600.0  1800.0  2100.0  3300.0  3400.0
+1500.0  1800.0  2100.0  2300.0  3200.0  3300.0
+1600.0  1700.0  2200.0  2500.0  3000.0  3300.0
+1600.0  1700.0  2200.0  2600.0  3000.0  3200.0
+1600.0  1700.0  2200.0  2700.0  3000.0  3200.0
+1700.0  1800.0  2200.0  2700.0  3000.0  3100.0
+1800.0  2000.0  2200.0  2800.0  3000.0  3100.0
+1300.0  1900.0  2200.0  2500.0  3100.0  3200.0
+1300.0  2000.0  2200.0  2600.0  3100.0  3200.0
+2100.0  2500.0  2800.0  2900.0  3200.0  3400.0
+2200.0  2600.0  2800.0  3000.0  3300.0  3400.0
+1600.0  1900.0  2500.0  2600.0  3100.0  3400.0
+1400.0  1800.0  2500.0  2600.0  3100.0  3400.0
+1100.0  1800.0  2600.0  2700.0  3200.0  3400.0
+1000.0  1800.0  2500.0  2600.0  3300.0  3400.0
+1200.0  1500.0  1700.0  1900.0  3000.0  3400.0
+1700.0  2100.0  2300.0  2700.0  3200.0  3300.0
+2000.0  2100.0  2600.0  2800.0  3100.0  3300.0
+2000.0  2100.0  2500.0  2900.0  3100.0  3200.0
+1700.0  2000.0  2300.0  2800.0  3100.0  3200.0
+1600.0  2000.0  2100.0  2700.0  3000.0  3100.0
+1600.0  2000.0  2100.0  2700.0  3100.0  3200.0
+1800.0  1900.0  2200.0  2500.0  2900.0  3100.0
+1700.0  2000.0  2200.0  2500.0  2900.0  3100.0
+1500.0  2000.0  2200.0  2400.0  2900.0  3100.0
+1600.0  1900.0  2200.0  2600.0  3000.0  3100.0
+1600.0  1900.0  2300.0  2700.0  2900.0  3100.0
+1700.0  2000.0  2200.0  2700.0  2900.0  3000.0
+1700.0  2000.0  2300.0  2700.0  2900.0  3100.0
+1700.0  2000.0  2300.0  2600.0  2900.0  3100.0
+1700.0  1900.0  2400.0  2600.0  2800.0  3000.0
+1700.0  1800.0  2300.0  2600.0  2800.0  3000.0
+1700.0  1900.0  2400.0  2600.0  2900.0  3100.0
+1700.0  1900.0  2300.0  2500.0  2800.0  3100.0
+1700.0  2100.0  2400.0  2600.0  2800.0  3100.0
+2000.0  2200.0  2500.0  2700.0  2800.0  3100.0
+1900.0  2200.0  2400.0  2700.0  2900.0  3000.0
+1800.0  2000.0  2300.0  2700.0  2900.0  3000.0
+1800.0  2300.0  2500.0  2700.0  3000.0  3100.0
+2000.0  2400.0  2600.0  2800.0  3100.0  3200.0
+1900.0  2300.0  2700.0  2800.0  3200.0  3300.0
+1800.0  2400.0  2600.0  2700.0  3200.0  3300.0
+1700.0  2300.0  2600.0  2800.0  3200.0  3300.0
+1700.0  2000.0  2300.0  2500.0  2900.0  3000.0
+1700.0  1800.0  2100.0  2500.0  2900.0  3000.0
+1600.0  1700.0  2000.0  2400.0  2900.0  3100.0
+1600.0  1700.0  2100.0  2400.0  2700.0  2900.0
+1500.0  1600.0  2000.0  2600.0  2800.0  3100.0
+1400.0  1500.0  2000.0  2700.0  3200.0  3300.0
+1500.0  1600.0  2100.0  2700.0  3200.0  3300.0
+1600.0  1800.0  2100.0  2600.0  3100.0  3200.0
+1600.0  1900.0  2100.0  2600.0  3100.0  3200.0
+1800.0  1900.0  2200.0  2800.0  3100.0  3300.0
+2000.0  2200.0  2800.0  2900.0  3200.0  3400.0
+2000.0  2200.0  2800.0  2900.0  3100.0  3400.0
+2000.0  2100.0  2700.0  2900.0  3100.0  3400.0
+1800.0  2200.0  2500.0  2800.0  3100.0  3200.0
+1800.0  2200.0  2600.0  2800.0  3100.0  3200.0
+1900.0  2200.0  2500.0  2800.0  3000.0  3200.0
+1800.0  1900.0  2300.0  2500.0  2900.0  3100.0
+1800.0  1900.0  2200.0  2500.0  2800.0  3100.0
+1600.0  1700.0  2100.0  2500.0  2800.0  3000.0
+1500.0  1700.0  2100.0  2400.0  2700.0  3100.0
+1400.0  1500.0  1900.0  2400.0  3000.0  3100.0
+1400.0  1600.0  2000.0  2400.0  3100.0  3200.0
+1500.0  1700.0  2100.0  2400.0  3000.0  3200.0
+1600.0  1800.0  2100.0  2400.0  2900.0  3100.0
+1600.0  1800.0  2100.0  2300.0  3000.0  3200.0
+1600.0  1800.0  2100.0  2300.0  3100.0  3300.0
+1600.0  1700.0  2000.0  2200.0  3200.0  3300.0
+1600.0  1700.0  1900.0  2100.0  3000.0  3300.0
+1700.0  1800.0  2100.0  2400.0  3100.0  3200.0
+2000.0  2300.0  2500.0  2700.0  2900.0  3100.0
+2000.0  2300.0  2600.0  2700.0  3000.0  3200.0
+1900.0  2100.0  2400.0  2600.0  2900.0  3200.0
+1700.0  1900.0  2200.0  2600.0  2800.0  3100.0
+1700.0  1800.0  2200.0  2600.0  2700.0  3100.0
+1600.0  1700.0  2200.0  2600.0  2800.0  3000.0
+1500.0  1600.0  2100.0  2700.0  2800.0  3000.0
+1300.0  1500.0  2000.0  2700.0  3000.0  3200.0
+1200.0  1500.0  2100.0  2800.0  3000.0  3200.0
+1300.0  1500.0  2100.0  2800.0  3000.0  3100.0
+1600.0  1900.0  2100.0  2600.0  3200.0  3300.0
+1600.0  1900.0  2200.0  2600.0  3200.0  3300.0
+1700.0  1900.0  2100.0  2500.0  3200.0  3300.0
+1500.0  1900.0  2400.0  2500.0  2900.0  3200.0
+1600.0  1700.0  2200.0  2500.0  2900.0  3100.0
+1600.0  1700.0  2200.0  2700.0  2800.0  3000.0
+1600.0  1700.0  2200.0  2700.0  2900.0  3100.0
+1500.0  1700.0  2400.0  2700.0  2900.0  3100.0
+1500.0  1800.0  2400.0  2700.0  2900.0  3200.0
+1700.0  2100.0  2500.0  2700.0  3100.0  3200.0
+1700.0  2100.0  2500.0  2600.0  2900.0  3100.0
+1900.0  2300.0  2600.0  2700.0  3000.0  3100.0
+1800.0  2200.0  2600.0  2700.0  3000.0  3100.0
+1900.0  2200.0  2500.0  2700.0  3000.0  3100.0
+1900.0  2100.0  2400.0  2800.0  3000.0  3100.0
+1800.0  2000.0  2300.0  2500.0  3000.0  3300.0
+1600.0  2000.0  2200.0  2600.0  2800.0  3000.0
+1700.0  1800.0  2100.0  2600.0  3000.0  3200.0
+1600.0  1800.0  2100.0  2600.0  2900.0  3200.0
+1500.0  1700.0  2100.0  2400.0  2900.0  3200.0
+1400.0  1600.0  2100.0  2300.0  3000.0  3200.0
+1400.0  1800.0  2100.0  2500.0  3100.0  3200.0
+1700.0  1900.0  2300.0  2500.0  2700.0  3100.0
+1800.0  1900.0  2200.0  2500.0  2800.0  3200.0
+1700.0  1900.0  2100.0  2500.0  2800.0  3100.0
+1700.0  1900.0  2200.0  2500.0  2800.0  3200.0
+1600.0  1800.0  2100.0  2600.0  2800.0  3100.0
+1600.0  1800.0  2200.0  2600.0  2900.0  3200.0
+1500.0  1700.0  2200.0  2600.0  2800.0  3100.0
+1400.0  1600.0  2200.0  2600.0  2900.0  3100.0
+1400.0  1600.0  2300.0  2600.0  3000.0  3200.0
+1400.0  1600.0  2200.0  2700.0  2900.0  3200.0
+1500.0  1700.0  2100.0  2600.0  3000.0  3100.0
+1600.0  1700.0  2100.0  2600.0  3000.0  3100.0
+1600.0  1800.0  2300.0  2500.0  2900.0  3100.0
+1700.0  1900.0  2300.0  2500.0  2900.0  3100.0
+1600.0  1800.0  2300.0  2500.0  2900.0  3000.0
+1500.0  1700.0  2000.0  2700.0  3000.0  3100.0
+1500.0  1600.0  2000.0  2600.0  2900.0  3100.0
+1500.0  1600.0  1900.0  2500.0  2900.0  3000.0
+1500.0  1600.0  1900.0  2600.0  2900.0  3100.0
+1700.0  1900.0  2500.0  2700.0  3100.0  3200.0
+1600.0  1700.0  2300.0  2700.0  2900.0  3200.0
+1600.0  1700.0  2200.0  2700.0  2800.0  3100.0
+1600.0  1700.0  2300.0  2700.0  2800.0  3100.0
+1500.0  1600.0  2200.0  2700.0  2900.0  3200.0
+1500.0  1600.0  2100.0  2700.0  3000.0  3200.0
+1400.0  1500.0  2100.0  2700.0  3000.0  3100.0
+1600.0  1800.0  2200.0  2500.0  3200.0  3300.0
+1900.0  2200.0  2400.0  2700.0  3100.0  3300.0
+1900.0  2100.0  2500.0  2800.0  3100.0  3200.0
+1800.0  2100.0  2400.0  2800.0  3000.0  3200.0
+1600.0  1800.0  2300.0  2700.0  3000.0  3200.0
+1600.0  1800.0  2200.0  2400.0  3000.0  3300.0
+1700.0  1900.0  2100.0  2500.0  3100.0  3300.0
+1600.0  1800.0  2200.0  2500.0  3200.0  3400.0
+1700.0  1900.0  2200.0  2500.0  3200.0  3400.0
+1600.0  1800.0  2200.0  2600.0  3200.0  3300.0
+1900.0  2100.0  2500.0  2700.0  2900.0  3100.0
+1900.0  2200.0  2400.0  2600.0  2800.0  3100.0
+1600.0  1700.0  2100.0  2500.0  2700.0  3000.0
+1600.0  1700.0  2100.0  2500.0  2600.0  3000.0
+1600.0  1700.0  2200.0  2400.0  2700.0  2900.0
+1700.0  1800.0  2300.0  2500.0  2800.0  3000.0
+1700.0  1800.0  2300.0  2500.0  2800.0  3100.0
+1700.0  1800.0  2200.0  2400.0  2800.0  3100.0
+1700.0  1900.0  2200.0  2400.0  2800.0  3100.0
+1500.0  2000.0  2300.0  2700.0  2900.0  3100.0
+1500.0  1900.0  2300.0  2500.0  3000.0  3300.0
+1700.0  2000.0  2400.0  2900.0  3200.0  3300.0
+2000.0  2100.0  2400.0  2700.0  3000.0  3100.0
+1900.0  2200.0  2400.0  2600.0  2900.0  3000.0
+1700.0  2100.0  2300.0  2700.0  2900.0  3000.0
+1600.0  2000.0  2200.0  2600.0  3000.0  3100.0
+1600.0  2100.0  2200.0  2600.0  3000.0  3100.0
+1600.0  2100.0  2300.0  2600.0  3000.0  3100.0
+1700.0  2100.0  2300.0  2600.0  2900.0  3100.0
+1800.0  2300.0  2400.0  2700.0  3000.0  3200.0
+1900.0  2300.0  2500.0  2700.0  3000.0  3100.0
+1900.0  2400.0  2500.0  2700.0  3000.0  3100.0
+1900.0  2400.0  2600.0  2800.0  3000.0  3200.0
+1800.0  2400.0  2600.0  2800.0  3000.0  3200.0
+1800.0  2300.0  2600.0  2700.0  3000.0  3100.0
+1600.0  1800.0  2300.0  2500.0  2800.0  3100.0
+1500.0  1800.0  2200.0  2500.0  2800.0  3000.0
+1500.0  1800.0  2300.0  2500.0  2800.0  3100.0
+1400.0  1900.0  2300.0  2500.0  2800.0  3000.0
+2000.0  2100.0  2500.0  2700.0  3100.0  3200.0
+2000.0  2100.0  2600.0  2800.0  3000.0  3200.0
+1800.0  2100.0  2400.0  2700.0  2900.0  3100.0
+1800.0  2100.0  2400.0  2600.0  2900.0  3200.0
+1800.0  2000.0  2400.0  2600.0  2900.0  3200.0
+1700.0  1900.0  2400.0  2600.0  2900.0  3200.0
+1500.0  1700.0  2100.0  2500.0  2900.0  3200.0
+1200.0  1700.0  2200.0  2400.0  2900.0  3200.0
+1500.0  1600.0  1900.0  2500.0  2800.0  3000.0
+1500.0  1600.0  2000.0  2500.0  2800.0  3000.0
+1600.0  1700.0  2100.0  2500.0  2800.0  3200.0
+1700.0  1800.0  2100.0  2400.0  2800.0  3100.0
+1700.0  1800.0  2100.0  2400.0  2900.0  3100.0
+1700.0  1800.0  2300.0  2700.0  3100.0  3300.0
+1300.0  1700.0  2300.0  2600.0  3100.0  3300.0
+1400.0  1800.0  2300.0  2700.0  3100.0  3300.0
+1500.0  1600.0  1900.0  2100.0  2800.0  3300.0
+1600.0  1700.0  2000.0  2100.0  2700.0  3300.0
+1800.0  2200.0  2400.0  2500.0  3000.0  3300.0
+1700.0  2300.0  2400.0  2600.0  3100.0  3200.0
+1700.0  2200.0  2400.0  2600.0  3000.0  3100.0
+1800.0  2000.0  2300.0  2500.0  2800.0  3100.0
+1800.0  2000.0  2200.0  2500.0  2900.0  3100.0
+1800.0  2100.0  2200.0  2700.0  3000.0  3100.0
+1800.0  2000.0  2200.0  2600.0  2900.0  3000.0
+1700.0  2000.0  2100.0  2600.0  3000.0  3100.0
+1700.0  2000.0  2100.0  2500.0  3000.0  3100.0
+1700.0  1900.0  2300.0  2500.0  2800.0  3200.0
+1600.0  1900.0  2300.0  2500.0  2900.0  3200.0
+1500.0  1800.0  2200.0  2500.0  3100.0  3300.0
+1600.0  1700.0  2300.0  2700.0  3100.0  3200.0
+1500.0  1700.0  2000.0  2600.0  2900.0  3000.0
+1400.0  1600.0  2000.0  2600.0  2900.0  3200.0
+1500.0  1600.0  2000.0  2600.0  2900.0  3200.0
+1600.0  1700.0  2100.0  2500.0  2900.0  3200.0
+1500.0  1900.0  2300.0  2400.0  3000.0  3300.0
+1600.0  1800.0  2300.0  2500.0  3000.0  3300.0
+1800.0  2200.0  2500.0  2700.0  2900.0  3100.0
+1500.0  1900.0  2200.0  2600.0  3000.0  3200.0
+1600.0  1800.0  2200.0  2700.0  2900.0  3100.0
+1400.0  1600.0  2000.0  2700.0  2800.0  3000.0
+1400.0  1600.0  1900.0  2600.0  2800.0  3000.0
+1400.0  1600.0  2100.0  2600.0  2900.0  3200.0
+1500.0  1600.0  2100.0  2600.0  3000.0  3200.0
+1500.0  1600.0  2100.0  2600.0  2900.0  3100.0
+1600.0  1700.0  2000.0  2600.0  2900.0  3000.0
+1700.0  1900.0  2100.0  2600.0  2800.0  3100.0
+1800.0  2000.0  2400.0  2700.0  2900.0  3200.0
+1900.0  2000.0  2400.0  2700.0  3000.0  3200.0
+1800.0  2200.0  2600.0  2900.0  3100.0  3300.0
+1800.0  1900.0  2100.0  2500.0  3100.0  3200.0
+1800.0  1900.0  2100.0  2400.0  3000.0  3200.0
+1700.0  1900.0  2100.0  2500.0  3000.0  3200.0
+1600.0  1700.0  2300.0  2500.0  2800.0  3200.0
+1600.0  1700.0  2200.0  2600.0  2800.0  3200.0
+1600.0  1700.0  2100.0  2600.0  2800.0  3200.0
+1600.0  1700.0  2000.0  2600.0  2800.0  3100.0
+1400.0  1700.0  2000.0  2600.0  2900.0  3100.0
+1800.0  2200.0  2500.0  2900.0  3100.0  3300.0
+1700.0  2100.0  2500.0  2900.0  3100.0  3200.0
+1500.0  1700.0  2400.0  2700.0  2900.0  3200.0
+1400.0  1500.0  2300.0  2500.0  2800.0  3100.0
+1300.0  1500.0  2300.0  2500.0  2800.0  3100.0
+1300.0  1500.0  2200.0  2600.0  2700.0  3100.0
+1200.0  1600.0  2400.0  2600.0  3000.0  3200.0
+1600.0  2000.0  2500.0  2700.0  3000.0  3300.0
+1500.0  1700.0  2500.0  2700.0  3000.0  3200.0
+1400.0  1500.0  2000.0  2700.0  3000.0  3100.0
+1400.0  1500.0  1900.0  2600.0  3000.0  3100.0
+2000.0  2300.0  2800.0  2900.0  3200.0  3400.0
+2100.0  2500.0  2700.0  2800.0  3200.0  3400.0
+1900.0  2300.0  2500.0  2700.0  3100.0  3400.0
+1800.0  1900.0  2200.0  2500.0  3000.0  3300.0
+1900.0  2200.0  2500.0  2600.0  2900.0  3200.0
+1900.0  2100.0  2300.0  2700.0  2800.0  3100.0
+1900.0  2000.0  2200.0  2600.0  3000.0  3200.0
+1900.0  2000.0  2500.0  2800.0  3100.0  3300.0
+1800.0  1900.0  2200.0  2700.0  2800.0  3100.0
+1700.0  1800.0  2400.0  2600.0  2800.0  3200.0
+1700.0  1900.0  2400.0  2500.0  2900.0  3300.0
+1400.0  1700.0  2300.0  2400.0  2600.0  3000.0
+1600.0  1700.0  2000.0  2200.0  2900.0  3200.0
+1600.0  1700.0  2000.0  2300.0  2900.0  3200.0
+1800.0  1900.0  2100.0  2600.0  2800.0  3100.0
+1800.0  1900.0  2300.0  2600.0  2900.0  3100.0
+1100.0  1800.0  2200.0  2400.0  2900.0  3200.0
+1200.0  1700.0  2300.0  2500.0  3000.0  3200.0
+1500.0  1600.0  2200.0  2600.0  2700.0  3100.0
+1700.0  1800.0  2100.0  2500.0  3000.0  3100.0
+1300.0  1700.0  2000.0  2400.0  3000.0  3200.0
+1300.0  1600.0  2000.0  2300.0  3100.0  3200.0
+1300.0  1600.0  1900.0  2300.0  3100.0  3200.0
+1400.0  1600.0  1900.0  2300.0  3100.0  3200.0
+1400.0  1600.0  1900.0  2400.0  3100.0  3200.0
+1500.0  1700.0  1900.0  2400.0  3100.0  3200.0
+1800.0  2100.0  2200.0  2700.0  3100.0  3200.0
+1700.0  2100.0  2200.0  2700.0  3100.0  3200.0
+1700.0  1800.0  2100.0  2700.0  3000.0  3200.0
+1700.0  1900.0  2300.0  2600.0  3200.0  3400.0
+1900.0  2200.0  2600.0  3000.0  3300.0  3400.0
+1400.0  1800.0  2200.0  2600.0  3000.0  3300.0
+1000.0  1400.0  2400.0  2600.0  2900.0  3200.0
+1200.0  1500.0  2500.0  2600.0  3000.0  3300.0
+1200.0  1500.0  2400.0  2600.0  3000.0  3300.0
+1200.0  1500.0  2400.0  2600.0  2900.0  3300.0
+1200.0  1500.0  2400.0  2500.0  2900.0  3300.0
+1200.0  1500.0  2300.0  2500.0  3000.0  3300.0
+1200.0  1500.0  2300.0  2400.0  3000.0  3300.0
+1300.0  2000.0  2300.0  2700.0  3100.0  3200.0
+1700.0  1800.0  2200.0  2500.0  2800.0  3200.0
+1800.0  1900.0  2300.0  2500.0  2700.0  3200.0
+1800.0  1900.0  2300.0  2600.0  2700.0  3100.0
+1800.0  1900.0  2400.0  2600.0  2800.0  3200.0
+1900.0  2000.0  2700.0  2800.0  3100.0  3300.0
+1900.0  2000.0  2600.0  2800.0  3000.0  3300.0
+1900.0  2000.0  2500.0  2800.0  3000.0  3300.0
+1900.0  2100.0  2700.0  2800.0  3100.0  3300.0
+1900.0  2000.0  2700.0  2800.0  3000.0  3300.0
+1900.0  2000.0  2600.0  2800.0  3000.0  3200.0
+1200.0  1500.0  2200.0  2500.0  3100.0  3300.0
+1600.0  1900.0  2200.0  2600.0  3000.0  3200.0
+1300.0  1700.0  2300.0  2500.0  3100.0  3200.0
+1400.0  1500.0  2100.0  2400.0  2600.0  3100.0
+1500.0  1600.0  2000.0  2400.0  2700.0  3100.0
+1600.0  1700.0  2000.0  2500.0  2700.0  3100.0
+1900.0  2100.0  2300.0  2600.0  2900.0  3200.0
+1900.0  2100.0  2400.0  2600.0  2900.0  3100.0
+1700.0  2000.0  2200.0  2700.0  2900.0  3100.0
+1800.0  2000.0  2100.0  2700.0  3000.0  3100.0
+1800.0  1900.0  2100.0  2700.0  3000.0  3200.0
+1900.0  2100.0  2700.0  2800.0  3000.0  3300.0
+1900.0  2300.0  2700.0  2800.0  3100.0  3300.0
+2000.0  2400.0  2700.0  2800.0  3200.0  3400.0
+1600.0  2000.0  2300.0  2600.0  3000.0  3100.0
+1000.0  1400.0  2200.0  2400.0  3100.0  3300.0
+1400.0  1500.0  2000.0  2100.0  2900.0  3300.0
+1800.0  1900.0  2100.0  2500.0  3000.0  3200.0
+1800.0  1900.0  2200.0  2700.0  3000.0  3300.0
+1800.0  2000.0  2300.0  2700.0  3100.0  3300.0
+1800.0  2100.0  2500.0  2700.0  3000.0  3100.0
+1900.0  2200.0  2800.0  2900.0  3200.0  3300.0
+2000.0  2200.0  2500.0  2900.0  3200.0  3300.0
+1800.0  2000.0  2300.0  2400.0  3100.0  3200.0
+1800.0  2000.0  2300.0  2400.0  3000.0  3200.0
+1800.0  1900.0  2200.0  2400.0  3000.0  3200.0
+1600.0  1800.0  2100.0  2600.0  2800.0  3000.0
+1500.0  1600.0  2200.0  2600.0  2900.0  3100.0
+1600.0  1700.0  2000.0  2600.0  3200.0  3300.0
+1700.0  1800.0  2000.0  2500.0  3100.0  3200.0
+1600.0  1900.0  2000.0  2500.0  3000.0  3100.0
+1900.0  2300.0  2800.0  2900.0  3200.0  3400.0
+2000.0  2200.0  2700.0  3000.0  3200.0  3300.0
+1900.0  2400.0  2800.0  2900.0  3200.0  3300.0
+2000.0  2400.0  2700.0  2900.0  3100.0  3300.0
+1800.0  2200.0  2400.0  2800.0  3000.0  3200.0
+1900.0  2200.0  2700.0  3000.0  3200.0  3400.0
+1900.0  2200.0  2600.0  2800.0  3000.0  3300.0
+1600.0  1700.0  2400.0  2600.0  2800.0  3200.0
+1600.0  1700.0  2300.0  2700.0  2800.0  3200.0
+1600.0  1700.0  2200.0  2700.0  2800.0  3200.0
+1600.0  1700.0  2000.0  2400.0  2900.0  3200.0
+1600.0  1900.0  2200.0  2500.0  2800.0  3000.0
+1600.0  2000.0  2400.0  2800.0  3200.0  3300.0
+1900.0  2000.0  2300.0  2700.0  3000.0  3200.0
+1600.0  1800.0  2000.0  2700.0  3000.0  3100.0
+1400.0  1600.0  2100.0  2700.0  2900.0  3100.0
+1900.0  2200.0  2800.0  3000.0  3300.0  3500.0
+1700.0  2000.0  2700.0  2800.0  3100.0  3300.0
+1600.0  1800.0  2200.0  2500.0  2800.0  3100.0
+1600.0  1800.0  2100.0  2400.0  2800.0  3000.0
+1600.0  2000.0  2300.0  2600.0  2800.0  3000.0
+1600.0  1900.0  2300.0  2600.0  2800.0  3000.0
+1800.0  2200.0  2500.0  2900.0  3200.0  3400.0
+1700.0  1900.0  2200.0  2800.0  3100.0  3200.0
+1600.0  2000.0  2300.0  2700.0  3000.0  3300.0
+1600.0  2000.0  2200.0  2600.0  3000.0  3200.0
+1800.0  2100.0  2300.0  2600.0  3000.0  3100.0
+1800.0  2100.0  2300.0  2600.0  3100.0  3200.0
+1900.0  2200.0  2400.0  2600.0  3100.0  3200.0
+1800.0  1900.0  2400.0  2600.0  2900.0  3200.0
+1300.0  2000.0  2300.0  2400.0  2800.0  3300.0
+1800.0  2000.0  2400.0  2600.0  2900.0  3300.0
+1900.0  2200.0  2300.0  2700.0  3000.0  3100.0
+1900.0  2200.0  2300.0  2700.0  3000.0  3200.0
+1800.0  2200.0  2400.0  2800.0  3100.0  3200.0
+1600.0  2100.0  2200.0  2700.0  3000.0  3100.0
+1700.0  2000.0  2300.0  2500.0  2900.0  3200.0
+1800.0  2200.0  2400.0  2700.0  3100.0  3300.0
+1200.0  2000.0  2500.0  2600.0  3100.0  3200.0
+1000.0  1600.0  2700.0  2900.0  3200.0  3300.0
+1000.0  1500.0  2700.0  2900.0  3200.0  3300.0
+1500.0  1700.0  2600.0  2800.0  3100.0  3300.0
+1500.0  1700.0  2600.0  2800.0  3000.0  3300.0
+1600.0  1700.0  2500.0  2800.0  3000.0  3300.0
+1600.0  1700.0  2400.0  2800.0  3000.0  3300.0
+1700.0  1800.0  2000.0  2400.0  3000.0  3200.0
+1700.0  1900.0  2100.0  2500.0  3000.0  3100.0
+1700.0  1900.0  2200.0  2500.0  2900.0  3100.0
+1700.0  1800.0  2200.0  2500.0  2800.0  3000.0
+1700.0  1800.0  2400.0  2600.0  2800.0  3100.0
+1200.0  1600.0  2200.0  2400.0  2900.0  3100.0
+1300.0  1800.0  2400.0  2600.0  2900.0  3200.0
+1300.0  1500.0  2000.0  2600.0  3000.0  3200.0
+1500.0  1800.0  2400.0  2700.0  3100.0  3200.0
+1800.0  2100.0  2400.0  2700.0  3100.0  3400.0
+1500.0  1600.0  2000.0  2200.0  3000.0  3300.0
+1600.0  1700.0  2100.0  2200.0  3000.0  3300.0
+1700.0  1800.0  2100.0  2300.0  3100.0  3300.0
+1800.0  1900.0  2200.0  2400.0  2900.0  3100.0
+1800.0  2000.0  2300.0  2700.0  3100.0  3200.0
+1500.0  1900.0  2200.0  2500.0  3000.0  3200.0
+1500.0  2100.0  2300.0  2500.0  3100.0  3300.0
+1700.0  1900.0  2400.0  2700.0  2900.0  3100.0
+1400.0  1800.0  2200.0  2300.0  3100.0  3400.0
+1300.0  1800.0  2300.0  2400.0  3000.0  3300.0
+1800.0  2200.0  2400.0  2600.0  3100.0  3300.0
+1800.0  2100.0  2300.0  2500.0  3100.0  3200.0
+1100.0  1700.0  2200.0  2300.0  3000.0  3200.0
+1100.0  1600.0  2200.0  2400.0  3100.0  3200.0
+1200.0  2000.0  2300.0  2500.0  3000.0  3100.0
+1700.0  2300.0  2500.0  2800.0  3200.0  3300.0
+1500.0  1900.0  2200.0  2400.0  2900.0  3100.0
+1400.0  1900.0  2200.0  2500.0  3000.0  3200.0
+1400.0  2000.0  2200.0  2600.0  3100.0  3200.0
+1700.0  2000.0  2300.0  2600.0  3000.0  3200.0
+1600.0  1800.0  2500.0  2800.0  2900.0  3200.0
+1700.0  1800.0  2500.0  2700.0  2900.0  3200.0
+1600.0  1800.0  2400.0  2600.0  2800.0  3200.0
+1400.0  1700.0  2100.0  2500.0  3000.0  3300.0
+1400.0  1600.0  1900.0  2000.0  3100.0  3300.0
+1400.0  1600.0  2000.0  2100.0  3100.0  3300.0
+1900.0  2000.0  2300.0  2400.0  2900.0  3300.0
+2100.0  2300.0  2600.0  2900.0  3100.0  3300.0
+1200.0  1800.0  2200.0  2400.0  3000.0  3200.0
+1700.0  2000.0  2300.0  2600.0  3000.0  3300.0
+1900.0  2400.0  2700.0  2900.0  3300.0  3400.0
+1400.0  1600.0  2100.0  2500.0  3100.0  3200.0
+1400.0  1700.0  2300.0  2500.0  3200.0  3400.0
+1400.0  1600.0  2300.0  2500.0  3200.0  3400.0
+1400.0  1600.0  2300.0  2500.0  3100.0  3400.0
+1500.0  1700.0  2200.0  2800.0  3100.0  3200.0
+1500.0  1600.0  2300.0  2800.0  3000.0  3200.0
+1400.0  1600.0  2300.0  2800.0  3000.0  3200.0
+1200.0  1400.0  2400.0  2900.0  3100.0  3200.0
+1200.0  1400.0  2400.0  2900.0  3200.0  3300.0
+1100.0  1400.0  2400.0  2900.0  3200.0  3300.0
+1600.0  1800.0  2400.0  2700.0  3000.0  3100.0
+1700.0  2000.0  2400.0  2800.0  3000.0  3200.0
+1900.0  2300.0  2700.0  3000.0  3300.0  3400.0
+1800.0  2300.0  2800.0  3000.0  3200.0  3400.0
+1800.0  1900.0  2400.0  2800.0  3100.0  3300.0
+1700.0  1800.0  2100.0  2600.0  3100.0  3200.0
+1700.0  1800.0  2100.0  2700.0  3100.0  3200.0
+1600.0  1700.0  2000.0  2500.0  3100.0  3200.0
+1400.0  1700.0  2200.0  2700.0  3200.0  3300.0
+1500.0  1700.0  2200.0  2600.0  3100.0  3200.0
+1700.0  1900.0  2200.0  2700.0  3100.0  3200.0
+1900.0  2200.0  2500.0  2800.0  3000.0  3100.0
+2000.0  2200.0  2500.0  2700.0  3200.0  3300.0
+1700.0  1800.0  2300.0  2800.0  2900.0  3200.0
+1700.0  1800.0  2400.0  2800.0  2900.0  3200.0
+1600.0  1800.0  2600.0  2800.0  3000.0  3300.0
+2100.0  2300.0  2500.0  2800.0  3000.0  3300.0
+2100.0  2200.0  2500.0  2600.0  2900.0  3200.0
+1900.0  2100.0  2400.0  2600.0  2800.0  3200.0
+1800.0  2000.0  2700.0  2800.0  3000.0  3300.0
+1700.0  2100.0  2400.0  2600.0  3000.0  3200.0
+1800.0  2000.0  2400.0  2500.0  3100.0  3400.0
+1900.0  2200.0  2500.0  2600.0  3100.0  3200.0
+1900.0  2200.0  2500.0  2600.0  3000.0  3200.0
+1800.0  2200.0  2500.0  2600.0  3000.0  3100.0
+2000.0  2200.0  2600.0  2700.0  3100.0  3200.0
+2000.0  2300.0  2600.0  2700.0  3100.0  3200.0
+1800.0  2100.0  2300.0  2500.0  2900.0  3100.0
+1800.0  2100.0  2700.0  3000.0  3300.0  3400.0
+1800.0  2000.0  2700.0  2900.0  3200.0  3300.0
+1900.0  2100.0  2400.0  2700.0  3000.0  3300.0
+1900.0  2100.0  2400.0  2700.0  2900.0  3100.0
+2000.0  2200.0  2400.0  2700.0  2900.0  3100.0
+2000.0  2400.0  2600.0  2700.0  2900.0  3100.0
+1500.0  1700.0  2200.0  2300.0  3100.0  3300.0
+1400.0  1600.0  2300.0  2600.0  2900.0  3300.0
+1600.0  1700.0  2500.0  2700.0  2900.0  3200.0
+1600.0  1700.0  2500.0  2600.0  2900.0  3200.0
+1500.0  1700.0  2300.0  2400.0  3000.0  3400.0
+1500.0  1700.0  2100.0  2300.0  2900.0  3300.0
+1600.0  1700.0  2100.0  2300.0  3000.0  3300.0
+1500.0  2000.0  2300.0  2600.0  3100.0  3300.0
+1500.0  2100.0  2500.0  2600.0  3000.0  3200.0
+1500.0  2000.0  2500.0  2600.0  3100.0  3200.0
+1600.0  1700.0  2000.0  2500.0  3000.0  3100.0
+1700.0  1800.0  2200.0  2600.0  3000.0  3100.0
+1700.0  1800.0  2200.0  2500.0  3000.0  3100.0
+1800.0  1900.0  2200.0  2600.0  3000.0  3100.0
+1700.0  2100.0  2600.0  2900.0  3100.0  3400.0
+1700.0  2000.0  2600.0  2900.0  3200.0  3300.0
+1800.0  1900.0  2300.0  2800.0  2900.0  3100.0
+1800.0  1900.0  2600.0  2800.0  3200.0  3300.0
+1800.0  2000.0  2500.0  2900.0  3200.0  3400.0
+1800.0  2400.0  2800.0  2900.0  3300.0  3400.0
+1500.0  1800.0  2300.0  2700.0  3200.0  3300.0
+1600.0  1700.0  2400.0  2800.0  3000.0  3200.0
+1200.0  1600.0  2200.0  2600.0  2900.0  3200.0
+1400.0  1800.0  2400.0  2800.0  3200.0  3300.0
+1700.0  1900.0  2300.0  2800.0  3100.0  3300.0
+1300.0  1700.0  2300.0  2600.0  3000.0  3200.0
+1500.0  1600.0  2400.0  2600.0  3000.0  3300.0
+1700.0  1800.0  2300.0  2600.0  3000.0  3100.0
+1800.0  2000.0  2600.0  2900.0  3200.0  3400.0
+1900.0  2000.0  2700.0  2900.0  3200.0  3400.0
+1200.0  1800.0  2400.0  2500.0  3000.0  3300.0
+1300.0  1900.0  2400.0  2500.0  3100.0  3300.0
+1700.0  2000.0  2500.0  2900.0  3200.0  3300.0
+1100.0  1400.0  2400.0  2900.0  3100.0  3200.0
+1700.0  1800.0  2200.0  2700.0  3100.0  3200.0
+2000.0  2200.0  2400.0  2600.0  3000.0  3100.0
+1900.0  2100.0  2300.0  2600.0  3000.0  3100.0
+1700.0  1900.0  2500.0  2800.0  3100.0  3200.0
+1400.0  1600.0  2400.0  2800.0  3000.0  3200.0
+1200.0  1500.0  2200.0  2600.0  3100.0  3300.0
+1400.0  1600.0  2100.0  2700.0  3100.0  3200.0
+1500.0  1700.0  2200.0  2400.0  2900.0  3100.0
+1500.0  1800.0  2200.0  2300.0  2800.0  2900.0
+1500.0  1800.0  2200.0  2500.0  2900.0  3100.0
+1600.0  1800.0  2200.0  2500.0  2900.0  3100.0
+1700.0  1800.0  2200.0  2700.0  2900.0  3000.0
+1600.0  1800.0  2100.0  2800.0  3000.0  3100.0
+1800.0  1900.0  2300.0  2800.0  3100.0  3300.0
+1800.0  2000.0  2400.0  2800.0  3200.0  3400.0
+1900.0  2000.0  2500.0  2800.0  3200.0  3400.0
+1900.0  2000.0  2300.0  2700.0  3200.0  3300.0
+1500.0  1600.0  2300.0  2600.0  3000.0  3200.0
+1400.0  1700.0  2200.0  2500.0  3100.0  3300.0
+1900.0  2300.0  2500.0  2800.0  3100.0  3300.0
+1300.0  2000.0  2200.0  2400.0  2800.0  3100.0
+1400.0  1700.0  2300.0  2600.0  3000.0  3300.0
+1500.0  1600.0  2300.0  2700.0  2800.0  3100.0
+1600.0  1800.0  2300.0  2600.0  2800.0  3100.0
+1900.0  2000.0  2400.0  2600.0  2900.0  3100.0
+2000.0  2500.0  2600.0  2700.0  3200.0  3300.0
+2200.0  2500.0  2600.0  2900.0  3100.0  3300.0
+2100.0  2400.0  2600.0  2700.0  3200.0  3300.0
+2100.0  2400.0  2600.0  2700.0  3200.0  3400.0
+1700.0  1900.0  2500.0  2700.0  2900.0  3100.0
+1900.0  2300.0  2400.0  2700.0  3000.0  3200.0
+2000.0  2300.0  2500.0  2700.0  3000.0  3100.0
+2000.0  2400.0  2500.0  2800.0  3200.0  3300.0
+2000.0  2400.0  2600.0  2800.0  3200.0  3300.0
+1500.0  1600.0  2300.0  2600.0  3100.0  3300.0
+1400.0  1600.0  2200.0  2400.0  3000.0  3300.0
+1400.0  1600.0  2100.0  2400.0  2900.0  3200.0
+1600.0  1700.0  2200.0  2300.0  2700.0  3200.0
+1700.0  1800.0  2100.0  2300.0  2800.0  3300.0
+1700.0  1800.0  2200.0  2400.0  2800.0  3300.0
+1900.0  2000.0  2200.0  2500.0  3000.0  3200.0
+1300.0  2000.0  2300.0  2400.0  2900.0  3200.0
+1900.0  2200.0  2400.0  2500.0  2900.0  3200.0
+1600.0  1800.0  2200.0  2500.0  2700.0  3100.0
+1600.0  1700.0  2300.0  2500.0  3000.0  3400.0
+1900.0  2000.0  2400.0  2700.0  2900.0  3300.0
+1800.0  2200.0  2400.0  2600.0  2900.0  3100.0
+1700.0  2000.0  2300.0  2600.0  2800.0  3100.0
+1700.0  1800.0  2200.0  2600.0  2800.0  3000.0
+1600.0  1700.0  2100.0  2700.0  2900.0  3000.0
+1400.0  1600.0  2000.0  2200.0  2800.0  3200.0
+1200.0  1600.0  2000.0  2400.0  3000.0  3200.0
+1200.0  1700.0  2200.0  2500.0  3000.0  3100.0
+1600.0  1900.0  2600.0  2800.0  3000.0  3200.0
+1500.0  1900.0  2300.0  2700.0  2900.0  3200.0
+1200.0  1900.0  2300.0  2400.0  3000.0  3300.0
+1400.0  1600.0  2300.0  2600.0  3200.0  3300.0
+1300.0  1900.0  2300.0  2500.0  3000.0  3200.0
+1500.0  1600.0  2100.0  2400.0  3000.0  3200.0
+1600.0  1700.0  2200.0  2300.0  3000.0  3300.0
+1600.0  1700.0  2100.0  2200.0  2900.0  3300.0
+1500.0  1600.0  2000.0  2100.0  2800.0  3200.0
+1500.0  1600.0  2000.0  2200.0  2800.0  3200.0
+1500.0  1600.0  2000.0  2200.0  2900.0  3200.0
+1500.0  1800.0  2100.0  2200.0  2900.0  3300.0
+2100.0  2300.0  2500.0  2700.0  2900.0  3100.0
+2000.0  2200.0  2400.0  2600.0  2800.0  3100.0
+1800.0  2100.0  2300.0  2600.0  2800.0  3000.0
+1600.0  1800.0  2400.0  2600.0  2800.0  3000.0
+1200.0  1300.0  2100.0  2700.0  2800.0  3000.0
+1100.0  1300.0  2300.0  2700.0  2900.0  3100.0
+1100.0  1300.0  2300.0  2700.0  2800.0  3100.0
+1100.0  1300.0  2300.0  2800.0  2900.0  3100.0
+1500.0  1800.0  2300.0  2700.0  3100.0  3200.0
+1200.0  1800.0  2300.0  2600.0  3000.0  3200.0
+1700.0  1800.0  2300.0  2600.0  2800.0  3200.0
+1900.0  2000.0  2400.0  2600.0  2800.0  3200.0
+2100.0  2200.0  2400.0  2600.0  3100.0  3300.0
+2000.0  2200.0  2400.0  2600.0  3100.0  3300.0
+2300.0  2500.0  2800.0  3000.0  3200.0  3300.0
+1900.0  2200.0  2700.0  2800.0  3100.0  3300.0
+1600.0  1700.0  2200.0  2600.0  3000.0  3300.0
+1500.0  1700.0  2100.0  2400.0  3100.0  3300.0
+1300.0  1600.0  2100.0  2400.0  3200.0  3400.0
+1400.0  2000.0  2300.0  2600.0  3000.0  3200.0
+1400.0  1600.0  2300.0  2500.0  3000.0  3300.0
+1400.0  1600.0  2300.0  2400.0  2800.0  3200.0
+1400.0  1600.0  2300.0  2500.0  2800.0  3200.0
+1400.0  1500.0  2300.0  2500.0  2800.0  3200.0
+1400.0  1500.0  2200.0  2600.0  3000.0  3300.0
+1500.0  1600.0  2000.0  2500.0  3100.0  3200.0
+1600.0  1800.0  2200.0  2700.0  3000.0  3200.0
+1500.0  1600.0  2300.0  2700.0  3000.0  3200.0
+1800.0  2000.0  2500.0  2800.0  2900.0  3200.0
+1700.0  1900.0  2500.0  2700.0  2900.0  3200.0
+1900.0  2200.0  2600.0  2800.0  3100.0  3200.0
+1700.0  1800.0  2100.0  2600.0  3100.0  3300.0
+1800.0  1900.0  2200.0  2700.0  3100.0  3200.0
+1300.0  1500.0  2100.0  2800.0  3100.0  3200.0
+1500.0  1600.0  2400.0  2800.0  3000.0  3300.0
+1400.0  1500.0  2500.0  2600.0  2900.0  3200.0
+1500.0  1600.0  2400.0  2600.0  2800.0  3300.0
+1600.0  1700.0  2400.0  2600.0  2800.0  3300.0
+1800.0  2000.0  2300.0  2600.0  3000.0  3100.0
+1800.0  2000.0  2300.0  2700.0  3000.0  3100.0
+1900.0  2100.0  2400.0  2800.0  3100.0  3300.0
+1900.0  2100.0  2400.0  2800.0  3000.0  3300.0
+1800.0  1900.0  2300.0  2700.0  2900.0  3100.0
+1800.0  2100.0  2300.0  2700.0  3000.0  3100.0
+1900.0  2100.0  2300.0  2800.0  3000.0  3100.0
+1400.0  2000.0  2200.0  2500.0  3000.0  3200.0
+1900.0  2200.0  2600.0  3000.0  3200.0  3300.0
+1800.0  2200.0  2600.0  3000.0  3200.0  3300.0
+1500.0  1600.0  2400.0  2600.0  2800.0  3200.0
+1400.0  1600.0  2500.0  2700.0  2900.0  3200.0
+1500.0  1600.0  2400.0  2700.0  2900.0  3100.0
+1500.0  2100.0  2400.0  2700.0  3100.0  3300.0
+1900.0  2000.0  2300.0  2600.0  3000.0  3100.0
+1900.0  2000.0  2300.0  2600.0  2900.0  3100.0
+1700.0  2000.0  2200.0  2600.0  2900.0  3100.0
+1700.0  2200.0  2400.0  2700.0  3000.0  3200.0
+1700.0  1900.0  2500.0  2600.0  2900.0  3100.0
+1500.0  1700.0  2500.0  2600.0  2900.0  3100.0
+1400.0  1600.0  2300.0  2600.0  2900.0  3100.0
+1200.0  1400.0  2200.0  2600.0  2900.0  3200.0
+1600.0  1700.0  2200.0  2600.0  3100.0  3200.0
+1700.0  1800.0  2100.0  2500.0  3100.0  3200.0
+1600.0  1900.0  2200.0  2700.0  3000.0  3200.0
+1700.0  1900.0  2300.0  2800.0  3100.0  3200.0
+1900.0  2100.0  2500.0  2700.0  3100.0  3400.0
+2100.0  2300.0  2600.0  2800.0  3000.0  3200.0
+2000.0  2300.0  2600.0  2800.0  3000.0  3200.0
+2100.0  2400.0  2700.0  2800.0  3000.0  3200.0
+1600.0  2300.0  2600.0  2800.0  3000.0  3100.0
+1700.0  2300.0  2600.0  2800.0  3000.0  3100.0
+1600.0  1700.0  2400.0  2600.0  3000.0  3300.0
+1500.0  1700.0  2400.0  2500.0  2900.0  3300.0
+1600.0  1900.0  2300.0  2600.0  2700.0  3300.0
+1600.0  1900.0  2300.0  2500.0  3300.0  3400.0
+1600.0  1800.0  2300.0  2500.0  3200.0  3400.0
+1800.0  2200.0  2700.0  2900.0  3300.0  3500.0
+1700.0  2000.0  2400.0  2600.0  3300.0  3400.0
+1800.0  2200.0  2800.0  3000.0  3200.0  3300.0
+2100.0  2400.0  2800.0  3100.0  3400.0  3500.0
+2100.0  2500.0  2800.0  3100.0  3400.0  3500.0
+1900.0  2300.0  2900.0  3000.0  3300.0  3400.0
+1900.0  2000.0  2300.0  2400.0  3200.0  3400.0
+1400.0  1700.0  2000.0  2300.0  3000.0  3100.0
+1400.0  1600.0  1900.0  2100.0  3000.0  3100.0
+1400.0  1600.0  1800.0  2100.0  3100.0  3200.0
+1400.0  1600.0  1800.0  2000.0  3200.0  3300.0
+1500.0  1700.0  2200.0  2300.0  2900.0  3300.0
+1600.0  1800.0  2400.0  2500.0  2900.0  3300.0
+1900.0  2000.0  2200.0  2400.0  3100.0  3300.0
+1900.0  2000.0  2200.0  2400.0  3200.0  3400.0
+1300.0  1500.0  2000.0  2500.0  3000.0  3200.0
+1300.0  1600.0  2100.0  2500.0  3000.0  3200.0
+1300.0  1600.0  2300.0  2600.0  3200.0  3300.0
+1400.0  1800.0  2200.0  2600.0  3200.0  3400.0
+1600.0  1800.0  2100.0  2400.0  3300.0  3400.0
+1700.0  1900.0  2200.0  2400.0  3200.0  3400.0
+1800.0  2000.0  2400.0  2700.0  3200.0  3400.0
+1900.0  2200.0  2600.0  2700.0  3000.0  3200.0
+1800.0  2100.0  2300.0  2600.0  3200.0  3300.0
+1600.0  1800.0  2000.0  2400.0  3100.0  3200.0
+1400.0  1600.0  1800.0  2000.0  3000.0  3100.0
+1400.0  1600.0  1800.0  2000.0  2900.0  3000.0
+1400.0  1600.0  1800.0  2100.0  2800.0  3000.0
+1500.0  1700.0  2100.0  2400.0  3000.0  3300.0
+1400.0  1600.0  2200.0  2500.0  3200.0  3300.0
+1100.0  1700.0  2400.0  2600.0  3100.0  3300.0
+1200.0  1800.0  2400.0  2500.0  3100.0  3200.0
+1600.0  2100.0  2400.0  2800.0  3300.0  3400.0
+1600.0  2300.0  2500.0  2800.0  3300.0  3400.0
+1800.0  2200.0  2700.0  3100.0  3400.0  3500.0
+1800.0  2200.0  2800.0  3000.0  3400.0  3500.0
+1900.0  2300.0  2800.0  3100.0  3400.0  3500.0
+1900.0  2400.0  2800.0  3100.0  3300.0  3400.0
+1800.0  2200.0  2600.0  2900.0  3400.0  3500.0
+1600.0  1800.0  2400.0  2800.0  3200.0  3300.0
+2000.0  2500.0  2600.0  2900.0  3200.0  3300.0
+2100.0  2400.0  2600.0  3000.0  3200.0  3300.0
+2200.0  2500.0  2700.0  3100.0  3200.0  3300.0
+2100.0  2500.0  2600.0  2800.0  3300.0  3400.0
+2000.0  2100.0  2700.0  2900.0  3300.0  3400.0
+1900.0  2000.0  2300.0  2500.0  3100.0  3400.0
+1700.0  1900.0  2300.0  2400.0  3100.0  3400.0
+1600.0  1900.0  2300.0  2500.0  3200.0  3400.0
+1600.0  2200.0  2700.0  3000.0  3300.0  3400.0
+1800.0  2300.0  2700.0  3000.0  3400.0  3500.0
+1700.0  2300.0  2500.0  2800.0  3300.0  3400.0
+1500.0  1900.0  2500.0  2700.0  3300.0  3400.0
+1700.0  2200.0  2500.0  2800.0  3100.0  3200.0
+1300.0  1800.0  2300.0  2500.0  3200.0  3300.0
+1100.0  2000.0  2400.0  2500.0  3200.0  3300.0
+1400.0  1800.0  2400.0  2700.0  3100.0  3300.0
+1500.0  1900.0  2500.0  2700.0  3100.0  3300.0
+1500.0  1900.0  2300.0  2500.0  2700.0  2900.0
+1400.0  1800.0  2200.0  2500.0  2700.0  2900.0
+1400.0  1800.0  2400.0  2600.0  3000.0  3200.0
+1400.0  1600.0  2400.0  2600.0  3000.0  3300.0
+1500.0  1900.0  2100.0  2300.0  3200.0  3300.0
+1400.0  1800.0  2300.0  2400.0  3000.0  3300.0
+2000.0  2300.0  2800.0  3000.0  3400.0  3500.0
+1600.0  1900.0  2200.0  2300.0  3100.0  3400.0
+1600.0  1800.0  2000.0  2500.0  3000.0  3100.0
+1500.0  1700.0  1800.0  2400.0  3100.0  3200.0
+1500.0  1600.0  1800.0  2400.0  3200.0  3300.0
+1700.0  1900.0  2300.0  2600.0  3100.0  3200.0
+1700.0  1900.0  2300.0  2500.0  2900.0  3300.0
+1900.0  2300.0  2700.0  2900.0  3100.0  3300.0
+1400.0  1700.0  2300.0  2500.0  3100.0  3200.0
+1200.0  1700.0  2300.0  2500.0  3100.0  3200.0
+1300.0  2200.0  2600.0  2800.0  3100.0  3300.0
+1100.0  1700.0  2500.0  2600.0  3200.0  3400.0
+1300.0  1600.0  2500.0  2600.0  3200.0  3300.0
+1400.0  1500.0  2500.0  2600.0  3100.0  3300.0
+1700.0  1800.0  2300.0  2500.0  2700.0  3300.0
+1800.0  2000.0  2500.0  2600.0  3100.0  3300.0
+1800.0  1900.0  2400.0  2500.0  2900.0  3200.0
+1800.0  1900.0  2400.0  2500.0  2800.0  3200.0
+1900.0  2000.0  2300.0  2500.0  2800.0  3300.0
+1800.0  2000.0  2200.0  2500.0  2800.0  3300.0
+1900.0  2300.0  2700.0  3000.0  3300.0  3500.0
+2100.0  2300.0  2900.0  3000.0  3200.0  3300.0
+1900.0  2100.0  2800.0  2900.0  3100.0  3300.0
+1700.0  2000.0  2600.0  2700.0  2900.0  3100.0
+1700.0  2100.0  2600.0  2800.0  3000.0  3200.0
+1700.0  2100.0  2600.0  2900.0  3100.0  3300.0
+1400.0  1500.0  1700.0  2900.0  3300.0  3400.0
+1400.0  1700.0  1800.0  2600.0  3300.0  3400.0
+1400.0  1700.0  2000.0  2700.0  3100.0  3200.0
+1500.0  1700.0  1900.0  2300.0  2900.0  3000.0
+1400.0  1700.0  1800.0  2200.0  3000.0  3100.0
+1500.0  1600.0  2000.0  2100.0  3000.0  3200.0
+1300.0  1600.0  1800.0  2000.0  3000.0  3100.0
+1300.0  1600.0  1800.0  2000.0  3100.0  3200.0
+1300.0  1500.0  1700.0  2200.0  3200.0  3300.0
+1300.0  1600.0  1700.0  2200.0  3200.0  3300.0
+1300.0  1500.0  1600.0  2100.0  3200.0  3300.0
+1600.0  1700.0  2100.0  2300.0  3100.0  3300.0
+1500.0  1600.0  2300.0  2400.0  3100.0  3400.0
+1900.0  2400.0  2800.0  3100.0  3400.0  3500.0
+2000.0  2400.0  2800.0  3000.0  3400.0  3500.0
+1600.0  1800.0  2200.0  2600.0  2900.0  3100.0
+1300.0  1600.0  1800.0  2400.0  3100.0  3200.0
+1200.0  1600.0  1800.0  2100.0  3000.0  3100.0
+1400.0  1900.0  2100.0  2400.0  3000.0  3100.0
+1300.0  1900.0  2100.0  2300.0  3000.0  3200.0
+1300.0  1800.0  2100.0  2300.0  3000.0  3200.0
+1400.0  1800.0  2500.0  2700.0  3100.0  3400.0
+1100.0  1800.0  2200.0  2300.0  3100.0  3200.0
+1100.0  1800.0  2200.0  2300.0  3200.0  3300.0
+1200.0  1700.0  2300.0  2400.0  3200.0  3300.0
+1400.0  1700.0  2300.0  2400.0  3000.0  3300.0
+1400.0  1700.0  2400.0  2500.0  3000.0  3300.0
+1900.0  2200.0  2400.0  2700.0  3200.0  3300.0
+1600.0  1800.0  2200.0  2400.0  3200.0  3400.0
+1300.0  1700.0  2200.0  2400.0  2900.0  3100.0
+1100.0  1600.0  1800.0  2100.0  2900.0  3000.0
+1500.0  1700.0  1900.0  2100.0  3000.0  3100.0
+1600.0  1700.0  1900.0  2100.0  3000.0  3100.0
+1700.0  1900.0  2300.0  2500.0  2900.0  3200.0
+1400.0  1800.0  2200.0  2300.0  3300.0  3400.0
+2100.0  2400.0  2800.0  2900.0  3200.0  3300.0
+2200.0  2500.0  2700.0  2900.0  3100.0  3300.0
+2300.0  2500.0  2700.0  3000.0  3100.0  3300.0
+1700.0  2200.0  2400.0  2800.0  3300.0  3400.0
+1800.0  2300.0  2800.0  3100.0  3400.0  3500.0
+1800.0  2300.0  2600.0  3100.0  3400.0  3500.0
+1800.0  2300.0  2600.0  3100.0  3300.0  3400.0
+1500.0  1700.0  2400.0  2600.0  3000.0  3300.0
+1400.0  1600.0  2400.0  2500.0  2900.0  3300.0
+1200.0  1700.0  2200.0  2400.0  3100.0  3200.0
+1500.0  2000.0  2400.0  2700.0  3200.0  3300.0
+1400.0  1900.0  2300.0  2700.0  3000.0  3200.0
+1300.0  2000.0  2500.0  2600.0  3300.0  3400.0
+1600.0  1900.0  2400.0  2500.0  3000.0  3200.0
+2000.0  2300.0  2600.0  2700.0  3000.0  3100.0
+1800.0  2000.0  2500.0  2800.0  3000.0  3300.0
+2000.0  2400.0  2600.0  2700.0  3100.0  3200.0
+1700.0  2400.0  2600.0  2800.0  3100.0  3200.0
+1200.0  1800.0  2200.0  2300.0  3300.0  3400.0
+1100.0  1600.0  2200.0  2400.0  3200.0  3300.0
+1100.0  1800.0  1900.0  2500.0  3000.0  3100.0
+1200.0  1700.0  1900.0  2500.0  3100.0  3200.0
+1400.0  1800.0  2300.0  2500.0  3200.0  3400.0
+1500.0  1700.0  2400.0  2500.0  3100.0  3400.0
+1500.0  1700.0  2300.0  2400.0  2900.0  3300.0
+1500.0  1900.0  2200.0  2600.0  3000.0  3100.0
+1300.0  1600.0  2100.0  2300.0  3000.0  3100.0
+1400.0  1700.0  2200.0  2300.0  3000.0  3100.0
+1400.0  1700.0  2200.0  2400.0  3000.0  3100.0
+1400.0  1600.0  2200.0  2300.0  3000.0  3100.0
+1500.0  1700.0  2200.0  2400.0  3100.0  3300.0
+1500.0  1700.0  2100.0  2300.0  3200.0  3300.0
+1400.0  1700.0  2000.0  2300.0  3200.0  3300.0
+1300.0  1700.0  2100.0  2500.0  3100.0  3200.0
+1500.0  1800.0  2200.0  2700.0  3000.0  3200.0
+1500.0  1700.0  2300.0  2400.0  3200.0  3400.0
+1500.0  1600.0  2200.0  2400.0  3100.0  3400.0
+1400.0  1600.0  2200.0  2400.0  3100.0  3400.0
+1100.0  1700.0  2300.0  2400.0  3200.0  3300.0
+1100.0  1900.0  2300.0  2500.0  3100.0  3200.0
+1500.0  1700.0  2300.0  2600.0  3100.0  3400.0
+1500.0  1700.0  2300.0  2500.0  3000.0  3400.0
+1500.0  1900.0  2200.0  2600.0  2800.0  3000.0
+1500.0  1800.0  2200.0  2500.0  2900.0  3000.0
+1500.0  1700.0  2200.0  2500.0  3100.0  3400.0
+1300.0  1800.0  2100.0  2300.0  3300.0  3400.0
+1100.0  1600.0  2200.0  2500.0  3000.0  3300.0
+1400.0  1600.0  2100.0  2500.0  2900.0  3200.0
+1500.0  1800.0  2400.0  2600.0  3300.0  3400.0
+1500.0  1900.0  2500.0  2700.0  3100.0  3200.0
+1800.0  2000.0  2100.0  2600.0  3000.0  3200.0
+1500.0  1700.0  2100.0  2600.0  3100.0  3300.0
+1500.0  1600.0  1800.0  2200.0  3200.0  3300.0
+1600.0  1800.0  1900.0  2300.0  3300.0  3400.0
+1500.0  1800.0  2100.0  2200.0  3200.0  3400.0
+1500.0  2000.0  2200.0  2600.0  3200.0  3300.0
+1300.0  1700.0  2100.0  2300.0  3100.0  3300.0
+1400.0  1500.0  2100.0  2300.0  3000.0  3300.0
+1500.0  1600.0  2100.0  2300.0  3000.0  3300.0
+1500.0  1600.0  2200.0  2300.0  3000.0  3300.0
+1400.0  1900.0  2100.0  2200.0  3000.0  3100.0
+1400.0  1800.0  2100.0  2400.0  3100.0  3200.0
+1500.0  1700.0  2300.0  2600.0  3100.0  3300.0
+1600.0  1900.0  2500.0  2700.0  3200.0  3300.0
+1500.0  1700.0  2200.0  2300.0  3200.0  3400.0
+1500.0  1900.0  2200.0  2400.0  2600.0  3300.0
+1500.0  1900.0  2300.0  2400.0  2800.0  3300.0
+1400.0  1600.0  2400.0  2600.0  3100.0  3300.0
+1400.0  1600.0  2400.0  2500.0  3100.0  3300.0
+1500.0  1600.0  2400.0  2500.0  3100.0  3200.0
+1600.0  1800.0  2100.0  2300.0  2800.0  3300.0
+1800.0  2100.0  2600.0  3000.0  3400.0  3500.0
+2100.0  2500.0  2900.0  3100.0  3400.0  3500.0
+1700.0  2100.0  2600.0  2700.0  3100.0  3200.0
+1600.0  1900.0  2300.0  2400.0  3200.0  3400.0
+1500.0  1800.0  2400.0  2500.0  3100.0  3400.0
+1600.0  2300.0  2700.0  3000.0  3300.0  3400.0
+1400.0  1600.0  1700.0  2100.0  3100.0  3200.0
+1400.0  1600.0  1700.0  2000.0  3100.0  3200.0
+1600.0  1700.0  1900.0  2200.0  3100.0  3300.0
+1800.0  1900.0  2500.0  2600.0  3000.0  3300.0
+1800.0  2100.0  2600.0  2900.0  3400.0  3500.0
+1800.0  2000.0  2300.0  2900.0  3200.0  3300.0
+1700.0  1800.0  2300.0  2400.0  2900.0  3100.0
+1100.0  1600.0  2500.0  2700.0  3100.0  3400.0
+1200.0  1700.0  2600.0  2700.0  3200.0  3300.0
+1400.0  2000.0  2600.0  2900.0  3300.0  3400.0
+1800.0  2200.0  2700.0  3000.0  3200.0  3300.0
+1600.0  1800.0  2200.0  2600.0  3100.0  3300.0
+1300.0  1900.0  2600.0  2700.0  3200.0  3300.0
+1800.0  2100.0  2800.0  2900.0  3300.0  3400.0
+1700.0  1800.0  2000.0  2400.0  3200.0  3300.0
+1600.0  1800.0  2100.0  2500.0  3100.0  3300.0
+1800.0  2100.0  2300.0  2600.0  3100.0  3300.0
+1800.0  1900.0  2600.0  2700.0  3000.0  3200.0
+1800.0  2000.0  2600.0  2700.0  3000.0  3200.0
+1900.0  2000.0  2500.0  2700.0  3000.0  3200.0
+2000.0  2100.0  2500.0  2600.0  2900.0  3200.0
+1800.0  1900.0  2500.0  2700.0  2900.0  3300.0
+1700.0  1800.0  2500.0  2700.0  3000.0  3300.0
+1800.0  2200.0  2700.0  2800.0  3200.0  3300.0
+1400.0  1600.0  2400.0  2600.0  3000.0  3200.0
+1400.0  1600.0  2300.0  2700.0  2900.0  3100.0
+1400.0  1600.0  2400.0  2700.0  2900.0  3200.0
+1700.0  2300.0  2700.0  3000.0  3300.0  3400.0
+1400.0  1700.0  2400.0  2700.0  3100.0  3300.0
+1400.0  1700.0  2400.0  2700.0  3000.0  3300.0
+1400.0  1700.0  1800.0  2500.0  3000.0  3100.0
+1300.0  1700.0  1900.0  2300.0  3000.0  3100.0
+1400.0  1800.0  1900.0  2400.0  3000.0  3100.0
+1900.0  2100.0  2500.0  2700.0  3100.0  3200.0
+1200.0  1700.0  2200.0  2300.0  2900.0  3100.0
+1300.0  1700.0  2200.0  2400.0  2800.0  3100.0
+1400.0  1700.0  2200.0  2300.0  2800.0  3100.0
+1500.0  1700.0  2200.0  2300.0  2900.0  3200.0
+1500.0  1700.0  2100.0  2300.0  2900.0  3200.0
+1500.0  1700.0  2000.0  2200.0  2900.0  3100.0
+1500.0  1700.0  1900.0  2200.0  3000.0  3200.0
+1500.0  1700.0  1900.0  2300.0  3100.0  3200.0
+1500.0  1700.0  2000.0  2300.0  3100.0  3200.0
+1600.0  1800.0  2300.0  2600.0  3000.0  3100.0
+2000.0  2500.0  2700.0  2900.0  3200.0  3300.0
+2300.0  2500.0  2800.0  3100.0  3200.0  3300.0
+2300.0  2500.0  2600.0  2900.0  3200.0  3300.0
+1500.0  1700.0  2000.0  2400.0  3100.0  3200.0
+1500.0  1700.0  1900.0  2200.0  3100.0  3300.0
+1600.0  1700.0  1800.0  2100.0  3200.0  3300.0
+1300.0  1600.0  2300.0  2500.0  3000.0  3100.0
+1200.0  1800.0  2300.0  2500.0  3000.0  3200.0
+1400.0  1800.0  2300.0  2400.0  2800.0  3200.0
+1400.0  1700.0  2300.0  2400.0  2900.0  3300.0
+1500.0  2000.0  2500.0  2600.0  2800.0  3100.0
+1800.0  2000.0  2200.0  2600.0  3000.0  3200.0
+1400.0  1700.0  1900.0  2100.0  3000.0  3100.0
+1300.0  1600.0  2300.0  2400.0  2900.0  3100.0
+1400.0  1700.0  2300.0  2500.0  3000.0  3200.0
+1500.0  1700.0  2300.0  2600.0  3100.0  3200.0
+1500.0  1800.0  2400.0  2600.0  3100.0  3200.0
+1600.0  1800.0  2000.0  2600.0  2900.0  3100.0
+1500.0  1700.0  1900.0  2600.0  2900.0  3100.0
+1400.0  1600.0  1700.0  2200.0  3100.0  3200.0
+1300.0  1500.0  1700.0  2100.0  3100.0  3200.0
+1300.0  1800.0  2300.0  2700.0  3100.0  3300.0
+1400.0  1700.0  1900.0  2200.0  3000.0  3100.0
+1400.0  1800.0  2000.0  2200.0  3000.0  3100.0
+2100.0  2300.0  2500.0  2700.0  3100.0  3200.0
+1500.0  1900.0  2300.0  2500.0  3000.0  3100.0
+1500.0  1900.0  2200.0  2500.0  2900.0  3100.0
+1500.0  1800.0  2100.0  2500.0  2900.0  3100.0
+1500.0  1700.0  2300.0  2600.0  2800.0  3200.0
+1500.0  1700.0  2300.0  2500.0  3000.0  3100.0
+1400.0  1900.0  2500.0  2700.0  3200.0  3300.0
+1200.0  1500.0  2600.0  2700.0  2900.0  3000.0
+1300.0  1600.0  2500.0  2600.0  3000.0  3200.0
+1400.0  1600.0  2500.0  2600.0  3000.0  3200.0
+1400.0  1700.0  2500.0  2600.0  3000.0  3200.0
+1500.0  1800.0  2500.0  2600.0  3100.0  3200.0
+1400.0  1600.0  2400.0  2600.0  2900.0  3200.0
+1400.0  1600.0  2400.0  2700.0  3000.0  3300.0
+1400.0  1500.0  2200.0  2600.0  2900.0  3200.0
+1300.0  1700.0  2400.0  2600.0  3000.0  3300.0
+1800.0  2000.0  2500.0  2600.0  3100.0  3400.0
+1100.0  1800.0  2500.0  2600.0  3100.0  3200.0
+1100.0  1800.0  2400.0  2500.0  3100.0  3300.0
+1100.0  1800.0  2400.0  2600.0  3100.0  3300.0
+1000.0  1800.0  2500.0  2700.0  3200.0  3300.0
+1100.0  1900.0  2500.0  2700.0  3200.0  3300.0
+1900.0  2000.0  2400.0  2500.0  2900.0  3300.0
+1700.0  1900.0  2300.0  2500.0  3000.0  3300.0
+1300.0  1700.0  2100.0  2300.0  3000.0  3200.0
+1300.0  1600.0  2000.0  2200.0  3000.0  3100.0
+1300.0  1600.0  1900.0  2100.0  3000.0  3100.0
+1500.0  1700.0  2400.0  2600.0  2900.0  3100.0
+1500.0  1900.0  2600.0  2700.0  3100.0  3200.0
+2100.0  2400.0  2900.0  3100.0  3300.0  3400.0
+2000.0  2500.0  2900.0  3100.0  3400.0  3500.0
+2000.0  2500.0  2700.0  3000.0  3300.0  3400.0
+1600.0  1900.0  2600.0  2700.0  3100.0  3300.0
+1600.0  1900.0  2600.0  2700.0  3200.0  3300.0
+1100.0  1500.0  1600.0  2200.0  2900.0  3000.0
+1200.0  1500.0  1600.0  2100.0  3000.0  3100.0
+2300.0  2500.0  2900.0  3100.0  3400.0  3500.0
+1500.0  1900.0  2300.0  2400.0  2900.0  3200.0
+1500.0  2000.0  2500.0  2600.0  3100.0  3300.0
+1500.0  1900.0  2400.0  2800.0  3200.0  3300.0
+1100.0  1800.0  2200.0  2500.0  3100.0  3200.0
+1200.0  1800.0  2200.0  2400.0  3200.0  3300.0
+1300.0  1700.0  2400.0  2500.0  3100.0  3200.0
+1600.0  2100.0  2300.0  2600.0  3100.0  3200.0
+1300.0  1800.0  2100.0  2300.0  3200.0  3300.0
+1200.0  1800.0  2100.0  2300.0  3100.0  3200.0
+2100.0  2200.0  2700.0  2800.0  3300.0  3400.0
+2000.0  2300.0  2600.0  2900.0  3200.0  3400.0
+2100.0  2400.0  2700.0  2800.0  3200.0  3300.0
+1900.0  2200.0  2600.0  2700.0  3100.0  3300.0
+2100.0  2400.0  2600.0  3000.0  3300.0  3400.0
+1400.0  1800.0  2300.0  2400.0  3000.0  3200.0
+1500.0  1700.0  1900.0  2400.0  2900.0  3000.0
+1500.0  1600.0  1800.0  2300.0  3100.0  3200.0
+1500.0  1700.0  1800.0  2300.0  3100.0  3200.0
+2100.0  2500.0  2700.0  3000.0  3400.0  3500.0
+2000.0  2400.0  2700.0  2900.0  3400.0  3500.0
+1400.0  1800.0  1900.0  2600.0  3100.0  3200.0
+1400.0  1800.0  2100.0  2300.0  3200.0  3300.0
+1600.0  1800.0  2300.0  2500.0  3000.0  3100.0
+1400.0  2000.0  2400.0  2700.0  3100.0  3200.0
+1400.0  1900.0  2300.0  2600.0  3100.0  3200.0
+1700.0  1800.0  2500.0  2800.0  3100.0  3300.0
+1400.0  1800.0  2400.0  2500.0  2900.0  3300.0
+1400.0  2000.0  2400.0  2500.0  3100.0  3300.0
+1300.0  1600.0  2400.0  2600.0  3200.0  3300.0
+1900.0  2400.0  2900.0  3100.0  3400.0  3500.0
+2000.0  2400.0  2900.0  3100.0  3400.0  3500.0
+900.0  1800.0  2500.0  2600.0  3200.0  3300.0
+900.0  1800.0  2600.0  2700.0  3200.0  3300.0
+1000.0  1700.0  2800.0  2900.0  3200.0  3300.0
+1500.0  1600.0  2200.0  2600.0  2900.0  3200.0
+1600.0  1800.0  2100.0  2500.0  2800.0  3000.0
+1800.0  1900.0  2400.0  2600.0  2900.0  3100.0
+1900.0  2100.0  2600.0  2900.0  3100.0  3300.0
+1800.0  1900.0  2600.0  2800.0  3000.0  3200.0
+1900.0  2100.0  2500.0  2900.0  3200.0  3400.0
+1300.0  1500.0  2400.0  2700.0  2900.0  3100.0
+1300.0  1600.0  2500.0  2600.0  2900.0  3100.0
+1400.0  1600.0  2400.0  2600.0  2900.0  3100.0
+1600.0  1700.0  2500.0  2800.0  2900.0  3200.0
+1700.0  2000.0  2600.0  3000.0  3300.0  3400.0
+1900.0  2200.0  2700.0  2800.0  3200.0  3400.0
+2000.0  2100.0  2700.0  2800.0  3100.0  3300.0
+2000.0  2100.0  2600.0  2800.0  3100.0  3200.0
+1700.0  2000.0  2500.0  2600.0  3100.0  3300.0
+1900.0  2100.0  2300.0  2500.0  3200.0  3300.0
+1300.0  1900.0  2300.0  2500.0  3200.0  3400.0
+1300.0  1800.0  2300.0  2400.0  3200.0  3400.0
+1300.0  1900.0  2300.0  2500.0  3200.0  3300.0
+2000.0  2300.0  2600.0  2700.0  3000.0  3300.0
+1800.0  2000.0  2300.0  2600.0  3100.0  3300.0
+1400.0  1800.0  2500.0  2700.0  3100.0  3300.0
+1200.0  1500.0  2500.0  2900.0  3100.0  3200.0
+1400.0  1600.0  2500.0  2700.0  2900.0  3100.0
+2100.0  2400.0  2700.0  2800.0  3100.0  3300.0
+1600.0  2100.0  2400.0  2800.0  3100.0  3300.0
+1400.0  1600.0  2100.0  2600.0  3100.0  3200.0
+1300.0  1500.0  2300.0  2600.0  3100.0  3300.0
+2000.0  2200.0  2700.0  2800.0  3200.0  3300.0
+1900.0  2200.0  2700.0  2800.0  3300.0  3400.0
+1800.0  2400.0  2700.0  3000.0  3400.0  3500.0
+1900.0  2400.0  2800.0  3000.0  3400.0  3500.0
+2000.0  2100.0  2600.0  2800.0  3000.0  3300.0
+2100.0  2200.0  2700.0  2800.0  3000.0  3300.0
+1500.0  2000.0  2400.0  2600.0  3100.0  3300.0
+1300.0  2000.0  2200.0  2500.0  3000.0  3100.0
+1800.0  2100.0  2300.0  2500.0  3100.0  3300.0
+1500.0  1800.0  2500.0  2800.0  3200.0  3300.0
+1500.0  1700.0  2100.0  2600.0  3200.0  3300.0
+1700.0  1800.0  2200.0  2600.0  3200.0  3400.0
+1400.0  1700.0  2300.0  2400.0  3200.0  3400.0
+1100.0  1800.0  2300.0  2400.0  3300.0  3400.0
+1000.0  1900.0  2400.0  2500.0  3100.0  3400.0
+1600.0  1800.0  2200.0  2300.0  3100.0  3300.0
+1500.0  1600.0  2300.0  2400.0  3100.0  3300.0
+1500.0  1600.0  2200.0  2300.0  3200.0  3400.0
+1400.0  1800.0  2300.0  2700.0  3000.0  3300.0
+1400.0  1800.0  2100.0  2300.0  2800.0  3200.0
+1400.0  1800.0  2100.0  2500.0  2900.0  3200.0
+1200.0  1600.0  1700.0  2100.0  3000.0  3100.0
+1200.0  1600.0  1900.0  2400.0  3000.0  3200.0
+1100.0  2000.0  2300.0  2500.0  3100.0  3200.0
+1100.0  2000.0  2400.0  2700.0  3100.0  3200.0
+1200.0  1400.0  2400.0  2600.0  2900.0  3200.0
+1300.0  1400.0  2300.0  2400.0  2800.0  3300.0
+1300.0  1500.0  2300.0  2400.0  2900.0  3200.0
+1300.0  1600.0  2400.0  2500.0  2800.0  3200.0
+1300.0  1600.0  2300.0  2500.0  2900.0  3200.0
+1300.0  1500.0  1600.0  2100.0  2800.0  2900.0
+1500.0  1800.0  2500.0  2700.0  3200.0  3400.0
+1400.0  1700.0  2300.0  2500.0  2900.0  3100.0
+1300.0  1700.0  2400.0  2500.0  3000.0  3200.0
+1200.0  1600.0  2500.0  2600.0  3100.0  3400.0
+1100.0  1700.0  2500.0  2600.0  3100.0  3400.0
+1400.0  1800.0  2200.0  2300.0  2600.0  3000.0
+1300.0  1800.0  2200.0  2300.0  2500.0  3000.0
+1400.0  1800.0  2300.0  2700.0  3000.0  3200.0
+1300.0  1500.0  2300.0  2400.0  2900.0  3100.0
+1300.0  1600.0  2400.0  2500.0  3000.0  3200.0
+1200.0  1600.0  2400.0  2600.0  3100.0  3300.0
+1200.0  1500.0  2600.0  2700.0  3100.0  3300.0
+1200.0  1500.0  2500.0  2700.0  2900.0  3200.0
+1400.0  1600.0  2300.0  2500.0  3100.0  3300.0
+1400.0  1600.0  2000.0  2200.0  2900.0  3000.0
+1300.0  1500.0  1800.0  1900.0  2800.0  2900.0
+1200.0  1600.0  1700.0  2200.0  2900.0  3000.0
+1300.0  1700.0  1800.0  2100.0  2900.0  3000.0
+1500.0  1700.0  2100.0  2400.0  2600.0  3100.0
+1500.0  2000.0  2500.0  2600.0  3000.0  3200.0
+1700.0  2000.0  2200.0  2600.0  2900.0  3200.0
+1700.0  2200.0  2600.0  2700.0  3100.0  3300.0
+1600.0  1700.0  2400.0  2500.0  3000.0  3400.0
+1900.0  2000.0  2100.0  2300.0  3300.0  3400.0
+1700.0  1900.0  2400.0  2500.0  3100.0  3300.0
+1500.0  1800.0  2200.0  2300.0  3100.0  3400.0
+1900.0  2300.0  2500.0  3000.0  3300.0  3400.0
+1500.0  1700.0  2100.0  2300.0  3000.0  3300.0
+1700.0  1900.0  2200.0  2400.0  2700.0  3200.0
+1800.0  1900.0  2200.0  2300.0  2700.0  3100.0
+1700.0  1900.0  2100.0  2300.0  2700.0  3100.0
+1700.0  2000.0  2600.0  2800.0  3100.0  3300.0
+1200.0  1800.0  2200.0  2400.0  3000.0  3100.0
+1300.0  1900.0  2200.0  2500.0  3000.0  3100.0
+1500.0  1600.0  2300.0  2500.0  3000.0  3200.0
+1400.0  1500.0  2300.0  2500.0  3000.0  3200.0
+1300.0  1700.0  2100.0  2400.0  3100.0  3200.0
+1500.0  1600.0  2200.0  2500.0  3100.0  3200.0
+1600.0  1700.0  2200.0  2300.0  3100.0  3400.0
+1400.0  1600.0  2100.0  2300.0  2900.0  3000.0
+1400.0  1600.0  2000.0  2200.0  2800.0  2900.0
+1400.0  1800.0  2200.0  2500.0  3100.0  3300.0
+1400.0  1800.0  2100.0  2400.0  3100.0  3300.0
+1400.0  1700.0  2000.0  2400.0  3000.0  3200.0
+1900.0  2100.0  2300.0  2500.0  2800.0  3100.0
+1900.0  2100.0  2300.0  2500.0  2900.0  3100.0
+1400.0  1600.0  2100.0  2400.0  3000.0  3200.0
+1400.0  1600.0  2000.0  2300.0  3000.0  3200.0
+1600.0  2000.0  2200.0  2600.0  2900.0  3200.0
+1600.0  2000.0  2200.0  2600.0  3000.0  3300.0
+1300.0  1900.0  2200.0  2400.0  3000.0  3200.0
+1700.0  2000.0  2300.0  2700.0  3000.0  3300.0
+1000.0  1600.0  2600.0  2700.0  3200.0  3300.0
+1100.0  1700.0  2600.0  2700.0  3200.0  3300.0
+1500.0  1800.0  2300.0  2400.0  3300.0  3400.0
+1900.0  2100.0  2300.0  2500.0  3100.0  3200.0
+1400.0  1700.0  2200.0  2500.0  3300.0  3400.0
+1400.0  1900.0  2200.0  2700.0  3200.0  3300.0
+1400.0  2000.0  2300.0  2700.0  3100.0  3200.0
+1600.0  2100.0  2400.0  2700.0  3000.0  3200.0
+1600.0  1800.0  2100.0  2400.0  3000.0  3200.0
+1700.0  1800.0  2100.0  2400.0  3000.0  3200.0
+1800.0  1900.0  2300.0  2500.0  2900.0  3300.0
+1800.0  1900.0  2200.0  2500.0  2900.0  3300.0
+1800.0  1900.0  2200.0  2500.0  2900.0  3200.0
+1700.0  1900.0  2200.0  2400.0  3000.0  3300.0
+1700.0  1900.0  2200.0  2400.0  2600.0  3000.0
+1500.0  1800.0  2500.0  2600.0  3200.0  3300.0
+1600.0  1700.0  2500.0  2600.0  3000.0  3200.0
+1600.0  1700.0  2400.0  2500.0  3100.0  3200.0
+1600.0  1700.0  2500.0  2600.0  3100.0  3200.0
+1600.0  1800.0  2500.0  2600.0  3100.0  3200.0
+1800.0  1900.0  2500.0  2600.0  3000.0  3200.0
+1900.0  2400.0  2700.0  3000.0  3300.0  3500.0
+1900.0  2400.0  2700.0  3100.0  3300.0  3400.0
+2000.0  2400.0  2600.0  3000.0  3300.0  3400.0
+1800.0  2500.0  2700.0  2900.0  3300.0  3400.0
+1800.0  2400.0  2700.0  2900.0  3400.0  3500.0
+1900.0  2400.0  2700.0  3000.0  3200.0  3300.0
+1600.0  1800.0  2400.0  2500.0  3000.0  3300.0
+1700.0  1800.0  2400.0  2600.0  3200.0  3300.0
+1300.0  1800.0  2000.0  2500.0  3100.0  3200.0
+1500.0  1800.0  2300.0  2400.0  3000.0  3100.0
+2100.0  2500.0  2700.0  2900.0  3100.0  3300.0
+1800.0  2000.0  2200.0  2500.0  2800.0  3100.0
+1400.0  1700.0  1900.0  2300.0  2800.0  2900.0
+1800.0  2000.0  2300.0  2700.0  3000.0  3300.0
+1800.0  1900.0  2300.0  2700.0  3200.0  3300.0
+1700.0  1800.0  2400.0  2800.0  3100.0  3300.0
+1500.0  1700.0  2500.0  2600.0  2900.0  3300.0
+1400.0  1500.0  2300.0  2500.0  2900.0  3300.0
+1500.0  1700.0  2200.0  2500.0  2900.0  3200.0
+1700.0  1900.0  2100.0  2300.0  3100.0  3300.0
+1400.0  1800.0  2200.0  2400.0  2700.0  3100.0
+1300.0  1500.0  1700.0  1900.0  2800.0  3000.0
+1300.0  1500.0  1700.0  1900.0  2900.0  3000.0
+1100.0  1600.0  2300.0  2500.0  3100.0  3200.0
+1000.0  1600.0  2300.0  2500.0  3200.0  3300.0
+1000.0  1700.0  2300.0  2400.0  3200.0  3300.0
+900.0  1700.0  2300.0  2400.0  3200.0  3300.0
+900.0  1800.0  2300.0  2400.0  3200.0  3300.0
+1100.0  1900.0  2200.0  2500.0  3100.0  3200.0
+1200.0  1900.0  2200.0  2400.0  3100.0  3200.0
+1200.0  1700.0  2200.0  2300.0  3100.0  3200.0
+1300.0  1700.0  2200.0  2300.0  3100.0  3200.0
+1400.0  1800.0  2200.0  2300.0  3100.0  3200.0
+1500.0  1700.0  2200.0  2300.0  3000.0  3200.0
+1500.0  1600.0  2200.0  2300.0  2900.0  3200.0
+1600.0  2000.0  2300.0  2400.0  3100.0  3300.0
+1600.0  2100.0  2300.0  2400.0  2700.0  3300.0
+1600.0  1800.0  2100.0  2300.0  2900.0  3000.0
+1400.0  1600.0  1700.0  2300.0  2900.0  3000.0
+1600.0  1800.0  2100.0  2300.0  3000.0  3100.0
+1600.0  1700.0  2000.0  2200.0  3000.0  3100.0
+1500.0  1600.0  2300.0  2400.0  2900.0  3100.0
+1500.0  1600.0  2400.0  2500.0  3000.0  3200.0
+1800.0  2100.0  2600.0  2700.0  3100.0  3200.0
+1500.0  1600.0  1900.0  2300.0  2900.0  3100.0
+1500.0  1700.0  2300.0  2700.0  3100.0  3200.0
+1500.0  2100.0  2500.0  2700.0  3100.0  3300.0
+1000.0  1500.0  2400.0  2500.0  3100.0  3300.0
+1200.0  1400.0  2400.0  2500.0  2900.0  3300.0
+1300.0  1700.0  2200.0  2400.0  2900.0  3000.0
+1200.0  2000.0  2400.0  2500.0  3000.0  3200.0
+1200.0  1900.0  2400.0  2500.0  3100.0  3300.0
+1300.0  1800.0  2400.0  2500.0  3100.0  3400.0
+1500.0  1800.0  2300.0  2400.0  3000.0  3300.0
+1700.0  1800.0  2300.0  2400.0  3000.0  3200.0
+1600.0  1900.0  2100.0  2400.0  2900.0  3200.0
+1400.0  1600.0  2200.0  2400.0  2900.0  3100.0
+1500.0  1700.0  2200.0  2400.0  3000.0  3100.0
+1400.0  1600.0  2300.0  2400.0  3000.0  3200.0
+1400.0  1600.0  2200.0  2300.0  2900.0  3200.0
+1600.0  1700.0  2000.0  2200.0  3000.0  3200.0
+1600.0  1800.0  2100.0  2400.0  2900.0  3200.0
+1600.0  1700.0  2100.0  2300.0  2900.0  3200.0
+1400.0  1600.0  2100.0  2400.0  3200.0  3300.0
+1200.0  1600.0  2100.0  2300.0  3100.0  3200.0
+1600.0  2100.0  2300.0  2500.0  3000.0  3200.0
+1800.0  2100.0  2400.0  2600.0  3100.0  3300.0
+1400.0  1600.0  2300.0  2400.0  2900.0  3200.0
+1400.0  1500.0  2100.0  2400.0  2700.0  3100.0
+1200.0  1400.0  2100.0  2200.0  3000.0  3300.0
+1300.0  1800.0  2200.0  2300.0  2800.0  3200.0
+1300.0  1700.0  2200.0  2300.0  2800.0  3300.0
+1400.0  1800.0  2200.0  2300.0  2800.0  3200.0
+1800.0  2100.0  2500.0  3000.0  3200.0  3400.0
+1700.0  1900.0  2200.0  2500.0  3100.0  3300.0
+1800.0  1900.0  2100.0  2400.0  3200.0  3300.0
+1500.0  1600.0  2200.0  2300.0  3200.0  3300.0
+1400.0  1700.0  2200.0  2300.0  3100.0  3300.0
+1400.0  1900.0  2200.0  2600.0  3100.0  3300.0
+1600.0  1900.0  2500.0  2900.0  3200.0  3300.0
+1400.0  1900.0  2400.0  2700.0  3100.0  3200.0
+1400.0  1600.0  2200.0  2300.0  2900.0  3100.0
+1600.0  1800.0  2200.0  2400.0  3000.0  3100.0
+1800.0  2000.0  2400.0  2900.0  3100.0  3200.0
+1900.0  2000.0  2500.0  2900.0  3100.0  3300.0
+1500.0  1600.0  2100.0  2200.0  3000.0  3300.0
+1500.0  1600.0  2100.0  2300.0  2900.0  3200.0
+1300.0  1500.0  2200.0  2300.0  2800.0  3100.0
+1100.0  1900.0  2500.0  2700.0  3100.0  3200.0
+1300.0  1800.0  2300.0  2700.0  3100.0  3200.0
+1100.0  1700.0  2200.0  2600.0  3000.0  3200.0
+1300.0  1600.0  1900.0  2100.0  3000.0  3200.0
+1300.0  1500.0  1800.0  1900.0  3000.0  3100.0
+1100.0  1400.0  2500.0  2600.0  3000.0  3300.0
+1300.0  1500.0  2400.0  2600.0  2900.0  3300.0
+1700.0  1900.0  2300.0  2400.0  3000.0  3300.0
+1600.0  1800.0  2100.0  2400.0  2800.0  3100.0
+1500.0  1700.0  2000.0  2500.0  2800.0  3000.0
+1400.0  1700.0  2200.0  2500.0  2900.0  3100.0
+1300.0  1500.0  2300.0  2600.0  3000.0  3300.0
+1000.0  1600.0  2200.0  2500.0  3000.0  3100.0
+1000.0  1500.0  2500.0  2600.0  3100.0  3300.0
+1000.0  1600.0  2500.0  2600.0  3200.0  3300.0
+1000.0  1700.0  2600.0  2700.0  3200.0  3300.0
+2000.0  2400.0  2800.0  3000.0  3200.0  3300.0
+1700.0  1900.0  2400.0  2700.0  3100.0  3200.0
+1800.0  1900.0  2400.0  2700.0  3000.0  3300.0
+1700.0  2100.0  2300.0  2500.0  3000.0  3200.0
+1200.0  1400.0  1500.0  2100.0  3100.0  3200.0
+1400.0  1600.0  1700.0  2200.0  3000.0  3200.0
+1600.0  1800.0  1900.0  2200.0  3100.0  3200.0
+1700.0  1800.0  2100.0  2300.0  3000.0  3200.0
+1900.0  2000.0  2400.0  2500.0  3000.0  3300.0
+1800.0  1900.0  2400.0  2500.0  2900.0  3300.0
+1800.0  1900.0  2300.0  2500.0  3100.0  3400.0
+1800.0  2000.0  2400.0  2600.0  3200.0  3400.0
+1400.0  1600.0  2100.0  2200.0  3100.0  3400.0
+1500.0  1700.0  1900.0  2500.0  3000.0  3200.0
+1300.0  1400.0  2200.0  2500.0  2900.0  3200.0
+1300.0  1700.0  2100.0  2600.0  3100.0  3300.0
+1900.0  2100.0  2400.0  2700.0  3200.0  3400.0
+1700.0  2000.0  2300.0  2500.0  3000.0  3300.0
+1600.0  1700.0  2100.0  2600.0  3000.0  3200.0
+1400.0  1600.0  1700.0  2000.0  3000.0  3100.0
+1300.0  1500.0  1600.0  2000.0  3000.0  3100.0
+1400.0  1600.0  2100.0  2200.0  2700.0  3200.0
+1300.0  1600.0  1700.0  2300.0  3100.0  3300.0
+1500.0  1700.0  2200.0  2500.0  3100.0  3200.0
+2100.0  2200.0  2600.0  2900.0  3200.0  3400.0
+2100.0  2300.0  2700.0  3000.0  3300.0  3400.0
+1900.0  2300.0  2800.0  3100.0  3300.0  3500.0
+1900.0  2300.0  2700.0  3100.0  3400.0  3500.0
+1900.0  2300.0  2700.0  3100.0  3300.0  3400.0
+1400.0  1800.0  2200.0  2300.0  2900.0  3200.0
+1400.0  1600.0  2100.0  2300.0  2800.0  3300.0
+1300.0  1700.0  2200.0  2300.0  2800.0  3200.0
+1300.0  1600.0  2200.0  2300.0  2900.0  3300.0
+1400.0  1800.0  2200.0  2600.0  3100.0  3300.0
+1700.0  2100.0  2400.0  2700.0  3000.0  3200.0
+1300.0  1800.0  2200.0  2500.0  3000.0  3300.0
+1900.0  2000.0  2500.0  2600.0  2900.0  3300.0
+2100.0  2200.0  2400.0  2600.0  2900.0  3200.0
+2100.0  2200.0  2400.0  2600.0  3000.0  3200.0
+2000.0  2100.0  2400.0  2500.0  3000.0  3200.0
+1800.0  2000.0  2200.0  2400.0  3100.0  3200.0
+1400.0  2000.0  2300.0  2400.0  3000.0  3100.0
+1300.0  1600.0  2100.0  2300.0  2700.0  3200.0
+1200.0  1800.0  2200.0  2400.0  3200.0  3400.0
+1200.0  1800.0  2300.0  2400.0  3200.0  3400.0
+1200.0  1900.0  2300.0  2400.0  3100.0  3400.0
+1700.0  1800.0  2100.0  2300.0  2800.0  3200.0
+1500.0  1600.0  2200.0  2300.0  2900.0  3300.0
+1500.0  1600.0  2100.0  2300.0  2800.0  3200.0
+1500.0  1600.0  2000.0  2200.0  2700.0  3200.0
+1400.0  1900.0  2200.0  2600.0  3200.0  3300.0
+1400.0  1600.0  2100.0  2200.0  2800.0  3200.0
+1900.0  2100.0  2300.0  2600.0  3100.0  3300.0
+2000.0  2300.0  2600.0  2800.0  3200.0  3400.0
+1700.0  1800.0  2300.0  2500.0  2700.0  3200.0
+1700.0  1800.0  2300.0  2500.0  2700.0  3100.0
+1800.0  1900.0  2400.0  2500.0  2700.0  3100.0
+1700.0  1800.0  2400.0  2500.0  2800.0  3200.0
+1600.0  1800.0  2500.0  2600.0  2900.0  3100.0
+1500.0  1800.0  2500.0  2600.0  3200.0  3400.0
+1400.0  1500.0  2100.0  2300.0  2900.0  3300.0
+1400.0  1600.0  2100.0  2300.0  3000.0  3300.0
+1600.0  1700.0  2200.0  2500.0  3100.0  3400.0
+1600.0  2000.0  2200.0  2400.0  2900.0  3100.0
+2000.0  2200.0  2600.0  2900.0  3200.0  3400.0
+1200.0  1400.0  2200.0  2300.0  3100.0  3300.0
+1300.0  1500.0  2200.0  2300.0  3100.0  3300.0
+1700.0  1800.0  2200.0  2300.0  3100.0  3400.0
+1800.0  1900.0  2200.0  2300.0  2900.0  3300.0
+1800.0  2000.0  2400.0  2700.0  3100.0  3400.0
+1600.0  1700.0  2000.0  2100.0  2700.0  3100.0
+1700.0  1900.0  2200.0  2300.0  2900.0  3200.0
+2200.0  2500.0  2700.0  2800.0  3100.0  3300.0
+1600.0  1700.0  2200.0  2300.0  2900.0  3100.0
+1400.0  1500.0  1600.0  2000.0  3000.0  3200.0
+1500.0  1700.0  1900.0  2400.0  3000.0  3200.0
+1900.0  2200.0  2500.0  2900.0  3200.0  3300.0
+1900.0  2400.0  2600.0  2900.0  3300.0  3400.0
+1800.0  2100.0  2200.0  2400.0  3000.0  3300.0
+1400.0  1600.0  1700.0  2300.0  3200.0  3300.0
+1400.0  1600.0  1900.0  2500.0  3200.0  3300.0
+1700.0  2100.0  2700.0  3000.0  3300.0  3400.0
+1400.0  1800.0  2300.0  2700.0  3100.0  3200.0
+1400.0  1600.0  2300.0  2700.0  3000.0  3200.0
+1400.0  2000.0  2200.0  2500.0  3100.0  3300.0
+1600.0  2100.0  2400.0  2900.0  3200.0  3400.0
+1400.0  1600.0  1800.0  2600.0  3300.0  3400.0
+1400.0  1500.0  1700.0  2200.0  3200.0  3300.0
+1400.0  1500.0  1700.0  2100.0  3100.0  3200.0
+1300.0  1500.0  2200.0  2400.0  2800.0  3100.0
+1300.0  1600.0  1800.0  2400.0  3000.0  3100.0
+1400.0  1600.0  2000.0  2200.0  3000.0  3300.0
+1500.0  1600.0  2100.0  2400.0  3100.0  3300.0
+1500.0  1700.0  2100.0  2300.0  2700.0  3100.0
+1500.0  1600.0  2000.0  2200.0  2600.0  3100.0
+1400.0  1500.0  2000.0  2300.0  3100.0  3300.0
+1400.0  1500.0  2000.0  2200.0  3100.0  3300.0
+1600.0  1800.0  2200.0  2300.0  3000.0  3200.0
+1400.0  1700.0  2100.0  2500.0  2900.0  3100.0
+1400.0  1800.0  2200.0  2400.0  2900.0  3000.0
+1500.0  1800.0  2300.0  2500.0  3000.0  3200.0
+2000.0  2300.0  2800.0  3100.0  3400.0  3500.0
+2000.0  2500.0  2800.0  2900.0  3200.0  3300.0
+1400.0  2000.0  2300.0  2600.0  3000.0  3300.0
+1600.0  1900.0  2300.0  2700.0  3200.0  3400.0
+2000.0  2400.0  2800.0  2900.0  3300.0  3400.0
+1200.0  1400.0  2000.0  2200.0  3200.0  3400.0
+1200.0  1600.0  2400.0  2500.0  2900.0  3200.0
+1500.0  1600.0  2300.0  2400.0  2800.0  3200.0
+1100.0  1600.0  2200.0  2300.0  3300.0  3400.0
+1300.0  1600.0  2200.0  2400.0  3000.0  3300.0
+1300.0  1600.0  2200.0  2400.0  2700.0  3200.0
+1400.0  1700.0  2300.0  2500.0  2700.0  3100.0
+1500.0  1700.0  2400.0  2500.0  2800.0  3100.0
+1800.0  2000.0  2200.0  2300.0  3000.0  3200.0
+1700.0  1900.0  2300.0  2400.0  2900.0  3200.0
+1700.0  1900.0  2200.0  2400.0  2900.0  3300.0
+1300.0  1700.0  2200.0  2300.0  3200.0  3400.0
+1500.0  1600.0  2300.0  2400.0  3000.0  3400.0
+1600.0  1900.0  2400.0  2800.0  3200.0  3400.0
+1500.0  1600.0  2300.0  2400.0  2900.0  3300.0
+1600.0  1700.0  2300.0  2400.0  2800.0  3300.0
+1800.0  2000.0  2200.0  2500.0  3000.0  3300.0
+1900.0  2000.0  2300.0  2500.0  2800.0  3100.0
+1600.0  1700.0  2400.0  2600.0  3100.0  3400.0
+1600.0  1800.0  2400.0  2700.0  3200.0  3300.0
+1600.0  1900.0  2400.0  2700.0  3200.0  3400.0
+1500.0  1800.0  2200.0  2500.0  3200.0  3400.0
+1200.0  1800.0  2300.0  2600.0  3100.0  3300.0
+1900.0  2000.0  2400.0  2600.0  3100.0  3400.0
+1700.0  1800.0  2400.0  2500.0  3000.0  3400.0
+1400.0  2000.0  2300.0  2400.0  2600.0  3100.0
+1800.0  1900.0  2100.0  2200.0  3300.0  3400.0
+1400.0  1600.0  1700.0  2300.0  3300.0  3400.0
+1400.0  1600.0  1700.0  2200.0  3300.0  3400.0
+1400.0  1600.0  1700.0  2300.0  3200.0  3400.0
+1600.0  1800.0  2000.0  2300.0  2900.0  3100.0
+1700.0  1800.0  2000.0  2300.0  2900.0  3100.0
+1600.0  1800.0  2100.0  2300.0  2800.0  3100.0
+1500.0  1700.0  2100.0  2300.0  2800.0  3100.0
+1500.0  1600.0  2100.0  2300.0  2700.0  3100.0
+1500.0  1600.0  2100.0  2200.0  2700.0  3100.0
+1400.0  1800.0  2300.0  2400.0  2800.0  3100.0
+1400.0  1600.0  2300.0  2400.0  2900.0  3300.0
+1200.0  1700.0  2200.0  2300.0  2900.0  3200.0
+1400.0  1500.0  2100.0  2400.0  3200.0  3400.0
+1700.0  2100.0  2400.0  2500.0  2900.0  3100.0
+1500.0  1700.0  2000.0  2400.0  3000.0  3200.0
+1400.0  1900.0  2200.0  2600.0  3000.0  3200.0
+1600.0  1800.0  2200.0  2700.0  3000.0  3100.0
+1600.0  1800.0  2100.0  2500.0  2800.0  3100.0
+2000.0  2300.0  2500.0  2800.0  3000.0  3100.0
+1900.0  2400.0  2700.0  2800.0  3100.0  3200.0
+1800.0  2300.0  2700.0  2800.0  3100.0  3200.0
+1700.0  2400.0  2700.0  2800.0  3200.0  3300.0
+1700.0  2400.0  2700.0  2800.0  3100.0  3200.0
+1600.0  2400.0  2700.0  2800.0  3100.0  3200.0
+1600.0  2000.0  2200.0  2700.0  3100.0  3200.0
+1800.0  2200.0  2600.0  2800.0  3100.0  3400.0
+1800.0  2200.0  2600.0  3000.0  3200.0  3400.0
+1800.0  2200.0  2300.0  2700.0  3200.0  3300.0
+1600.0  2100.0  2300.0  2600.0  3200.0  3300.0
+1700.0  1900.0  2200.0  2600.0  3000.0  3100.0
+1600.0  1800.0  2200.0  2500.0  2800.0  3000.0
+2000.0  2400.0  2800.0  3100.0  3200.0  3300.0
+1500.0  1700.0  1900.0  2000.0  2600.0  3100.0
+1400.0  1600.0  1900.0  2000.0  2500.0  3100.0
+1400.0  1600.0  1800.0  2000.0  2500.0  3100.0
+1400.0  1500.0  1800.0  1900.0  2500.0  3100.0
+1400.0  1500.0  1800.0  1900.0  2600.0  3200.0
+1400.0  1500.0  1700.0  2000.0  2900.0  3200.0
+1300.0  1700.0  2100.0  2600.0  3100.0  3200.0
+1200.0  1700.0  2200.0  2500.0  3100.0  3200.0
+1800.0  2000.0  2500.0  2600.0  3000.0  3200.0
+1700.0  1900.0  2200.0  2700.0  2900.0  3200.0
+1500.0  1700.0  2100.0  2600.0  3000.0  3200.0
+1600.0  1800.0  2200.0  2400.0  2700.0  3100.0
+1600.0  1900.0  2200.0  2600.0  2800.0  3100.0
+1600.0  1800.0  2100.0  2500.0  3000.0  3100.0
+1600.0  1800.0  2000.0  2200.0  2600.0  3100.0
+1200.0  1400.0  2300.0  2700.0  2800.0  3100.0
+1300.0  1600.0  2100.0  2600.0  3100.0  3300.0
+1400.0  1600.0  2100.0  2500.0  2700.0  3000.0
+1300.0  1600.0  2300.0  2600.0  3000.0  3300.0
+1300.0  1700.0  2300.0  2700.0  3000.0  3300.0
+1400.0  1600.0  2000.0  2500.0  2800.0  3000.0
+1800.0  2000.0  2200.0  2600.0  2800.0  3100.0
+1800.0  1900.0  2400.0  2600.0  2800.0  3100.0
+1500.0  1700.0  2200.0  2700.0  2900.0  3100.0
+1400.0  1700.0  2300.0  2700.0  3000.0  3100.0
+1700.0  2200.0  2500.0  2900.0  3200.0  3300.0
+1500.0  1700.0  2100.0  2700.0  3000.0  3200.0
+1700.0  2000.0  2600.0  2700.0  3100.0  3200.0
+1500.0  1700.0  1900.0  2500.0  3100.0  3200.0
+1500.0  2000.0  2200.0  2600.0  3000.0  3100.0
+1500.0  1800.0  2000.0  2800.0  3200.0  3300.0
+1700.0  1900.0  2500.0  2600.0  2900.0  3200.0
+1800.0  2000.0  2400.0  2600.0  3000.0  3100.0
+1400.0  1700.0  2100.0  2500.0  2700.0  3000.0
+1500.0  1900.0  2200.0  2400.0  2800.0  3200.0
+1300.0  1500.0  2100.0  2400.0  3100.0  3300.0
+1200.0  1600.0  2200.0  2500.0  3200.0  3300.0
+1300.0  1800.0  2300.0  2600.0  3200.0  3300.0
+1300.0  1900.0  2200.0  2400.0  3100.0  3200.0
+1300.0  1800.0  2200.0  2400.0  3000.0  3100.0
+1500.0  1700.0  2100.0  2700.0  3100.0  3200.0
+1500.0  1700.0  2100.0  2800.0  3100.0  3200.0
+1700.0  2000.0  2200.0  2500.0  3100.0  3200.0
+1800.0  1900.0  2100.0  2300.0  2600.0  3100.0
+1500.0  1600.0  1800.0  2000.0  2500.0  3100.0
+1700.0  2000.0  2200.0  2400.0  3100.0  3300.0
+1600.0  1800.0  2000.0  2400.0  2900.0  3200.0
+1400.0  1500.0  1700.0  1900.0  3000.0  3200.0
+1600.0  1700.0  2000.0  2600.0  3000.0  3200.0
+1700.0  1900.0  2100.0  2500.0  3100.0  3200.0
+1700.0  2200.0  2600.0  2800.0  3100.0  3200.0
+1600.0  2200.0  2500.0  2700.0  3000.0  3100.0
+1700.0  2000.0  2200.0  2500.0  3000.0  3100.0
+1600.0  2000.0  2500.0  2800.0  3100.0  3300.0
+1700.0  2100.0  2400.0  2900.0  3200.0  3300.0
+1800.0  2000.0  2400.0  2700.0  3000.0  3100.0
+1800.0  2000.0  2500.0  2700.0  3000.0  3100.0
+1600.0  1900.0  2300.0  2600.0  3000.0  3100.0
+1500.0  1900.0  2100.0  2500.0  3000.0  3200.0
+1900.0  2300.0  2500.0  2600.0  2900.0  3100.0
+2000.0  2200.0  2500.0  2800.0  3300.0  3400.0
+2100.0  2300.0  2600.0  2800.0  3200.0  3400.0
+2200.0  2400.0  2800.0  2900.0  3200.0  3300.0
+2100.0  2500.0  2700.0  2900.0  3200.0  3300.0
+1800.0  2300.0  2500.0  2700.0  3100.0  3200.0
+1800.0  2300.0  2500.0  2700.0  3000.0  3200.0
+1400.0  1800.0  2500.0  2700.0  3200.0  3300.0
+1400.0  1600.0  2500.0  2700.0  3200.0  3300.0
+1400.0  1700.0  2200.0  2700.0  3100.0  3300.0
+1500.0  1700.0  2200.0  2700.0  3000.0  3200.0
+1500.0  1700.0  2100.0  2700.0  2900.0  3100.0
+1800.0  2300.0  2600.0  2700.0  3200.0  3300.0
+1800.0  2400.0  2700.0  2800.0  3300.0  3400.0
+1800.0  2500.0  2700.0  2900.0  3200.0  3300.0
+1600.0  1800.0  2200.0  2400.0  2800.0  3000.0
+1600.0  1800.0  2200.0  2400.0  2800.0  3100.0
+1900.0  2000.0  2200.0  2700.0  3000.0  3100.0
+1900.0  2000.0  2300.0  2700.0  3100.0  3300.0
+2000.0  2200.0  2500.0  2600.0  2900.0  3100.0
+1400.0  1900.0  2400.0  2700.0  3000.0  3300.0
+1500.0  1900.0  2300.0  2700.0  3000.0  3300.0
+1300.0  1800.0  2100.0  2400.0  3100.0  3200.0
+1500.0  1800.0  2200.0  2500.0  2700.0  3100.0
+1600.0  2000.0  2200.0  2600.0  2900.0  3100.0
+1700.0  2100.0  2700.0  3000.0  3200.0  3300.0
+1600.0  1800.0  2600.0  2800.0  3200.0  3300.0
+1200.0  1600.0  2200.0  2600.0  3000.0  3300.0
+1800.0  2300.0  2600.0  2800.0  3100.0  3200.0
+1800.0  2400.0  2700.0  2800.0  3100.0  3200.0
+1700.0  2300.0  2700.0  2800.0  3100.0  3200.0
+1900.0  2200.0  2700.0  2900.0  3100.0  3300.0
+1600.0  2200.0  2500.0  2700.0  3000.0  3200.0
+1600.0  2000.0  2500.0  2700.0  3000.0  3100.0
+1800.0  2200.0  2500.0  2600.0  3100.0  3200.0
+1800.0  2500.0  2700.0  2800.0  3200.0  3300.0
+1700.0  2300.0  2600.0  2700.0  3100.0  3200.0
+1400.0  1600.0  2000.0  2500.0  2900.0  3100.0
+1700.0  2000.0  2300.0  2600.0  3200.0  3300.0
+1200.0  1400.0  1700.0  1800.0  2700.0  3200.0
+1500.0  1700.0  2000.0  2400.0  2700.0  3000.0
+1600.0  1800.0  2300.0  2400.0  2800.0  3100.0
+1800.0  2000.0  2400.0  2500.0  2900.0  3100.0
+1700.0  2000.0  2400.0  2600.0  2900.0  3000.0
+1500.0  1900.0  2300.0  2600.0  2900.0  3100.0
+1500.0  1900.0  2200.0  2600.0  2900.0  3100.0
+1500.0  1900.0  2100.0  2400.0  2900.0  3100.0
+1700.0  2300.0  2500.0  2800.0  3100.0  3200.0
+1600.0  2400.0  2700.0  2800.0  3200.0  3300.0
+1500.0  2400.0  2800.0  2900.0  3200.0  3300.0
+1200.0  1700.0  2300.0  2400.0  3000.0  3200.0
+1300.0  1900.0  2400.0  2600.0  3200.0  3300.0
+1500.0  2100.0  2300.0  2700.0  3100.0  3300.0
+1700.0  2200.0  2500.0  2700.0  3100.0  3300.0
+1400.0  1600.0  2000.0  2500.0  3000.0  3300.0
+1600.0  2000.0  2400.0  2500.0  3100.0  3300.0
+1400.0  1900.0  2300.0  2500.0  3200.0  3400.0
+1100.0  2100.0  2300.0  2600.0  3200.0  3300.0
+1100.0  2200.0  2400.0  2700.0  3200.0  3300.0
+1200.0  2000.0  2300.0  2600.0  3100.0  3200.0
+1400.0  1900.0  2200.0  2500.0  3100.0  3200.0
+1500.0  1700.0  1900.0  2500.0  2900.0  3000.0
+1500.0  1900.0  2200.0  2400.0  2600.0  3100.0
+1800.0  2000.0  2500.0  2600.0  2900.0  3200.0
+2000.0  2100.0  2500.0  2700.0  3100.0  3300.0
+1800.0  2100.0  2400.0  2600.0  3000.0  3400.0
+1600.0  1800.0  2200.0  2400.0  3300.0  3400.0
+1400.0  1800.0  2200.0  2400.0  3200.0  3300.0
+1600.0  1900.0  2200.0  2700.0  3200.0  3300.0
+1500.0  1900.0  2300.0  2400.0  3000.0  3200.0
+1500.0  1900.0  2300.0  2500.0  2900.0  3200.0
+2200.0  2500.0  2900.0  3000.0  3300.0  3400.0
+1500.0  1800.0  2400.0  2700.0  3300.0  3400.0
+1400.0  1800.0  2100.0  2700.0  3100.0  3200.0
+1400.0  1600.0  2000.0  2700.0  3100.0  3200.0
+1900.0  2000.0  2300.0  2800.0  3100.0  3200.0
+2100.0  2200.0  2400.0  2600.0  3100.0  3200.0
+1600.0  1900.0  2400.0  2500.0  2900.0  3100.0
+1800.0  1900.0  2200.0  2700.0  3200.0  3300.0
+1800.0  2200.0  2800.0  3000.0  3300.0  3500.0
+1800.0  2300.0  2600.0  2900.0  3300.0  3500.0
+2100.0  2400.0  2700.0  3000.0  3300.0  3500.0
+1600.0  1800.0  2200.0  2400.0  2900.0  3300.0
+1500.0  1900.0  2500.0  2600.0  2900.0  3100.0
+1600.0  2100.0  2400.0  2600.0  2800.0  3100.0
+1500.0  1600.0  2100.0  2400.0  2900.0  3300.0
+1500.0  1700.0  2200.0  2400.0  2900.0  3300.0
+1400.0  1500.0  2300.0  2500.0  3200.0  3300.0
+1400.0  1700.0  2400.0  2600.0  3200.0  3300.0
+1800.0  2000.0  2400.0  2500.0  3000.0  3200.0
+1800.0  1900.0  2300.0  2400.0  2900.0  3200.0
+1700.0  2400.0  2600.0  2900.0  3300.0  3400.0
+1600.0  1700.0  2100.0  2300.0  2700.0  3200.0
+1800.0  2300.0  2600.0  2900.0  3100.0  3300.0
+1800.0  2400.0  2600.0  2900.0  3300.0  3400.0
+1900.0  2300.0  2700.0  2900.0  3200.0  3400.0
+1400.0  1800.0  2200.0  2500.0  3300.0  3400.0
+1300.0  1900.0  2300.0  2700.0  3100.0  3300.0
+1500.0  1800.0  2300.0  2600.0  3200.0  3300.0
+1800.0  2000.0  2400.0  2500.0  3000.0  3300.0
+1900.0  2300.0  2600.0  2700.0  3200.0  3300.0
+1900.0  2100.0  2700.0  2900.0  3100.0  3300.0
+1600.0  1800.0  2000.0  2500.0  2900.0  3000.0
+1800.0  2100.0  2400.0  2500.0  2900.0  3100.0
+1500.0  1700.0  2400.0  2500.0  2700.0  3000.0
+1400.0  1600.0  2200.0  2500.0  2600.0  3000.0
+1300.0  2100.0  2300.0  2800.0  3100.0  3200.0
+1300.0  2100.0  2200.0  2700.0  3100.0  3200.0
+1500.0  2000.0  2300.0  2500.0  3000.0  3100.0
+1900.0  2000.0  2300.0  2400.0  2800.0  3200.0
+1900.0  2000.0  2300.0  2500.0  2900.0  3300.0
+1600.0  1900.0  2500.0  2800.0  3100.0  3200.0
+1400.0  2000.0  2400.0  2600.0  3000.0  3100.0
+1200.0  1900.0  2000.0  2400.0  3100.0  3200.0
+1300.0  1600.0  1700.0  2000.0  3200.0  3300.0
+1600.0  1800.0  2100.0  2600.0  2900.0  3000.0
+1700.0  1900.0  2300.0  2600.0  3000.0  3100.0
+1800.0  2200.0  2800.0  3000.0  3200.0  3400.0
+2000.0  2300.0  2900.0  3100.0  3300.0  3400.0
+1500.0  2000.0  2300.0  2700.0  3300.0  3400.0
+1200.0  1700.0  2300.0  2500.0  3100.0  3300.0
+1300.0  1800.0  2200.0  2600.0  3200.0  3300.0
+1200.0  2000.0  2200.0  2600.0  3100.0  3200.0
+2000.0  2300.0  2500.0  2900.0  3200.0  3300.0
+2200.0  2300.0  2700.0  3000.0  3200.0  3300.0
+1500.0  2000.0  2300.0  2500.0  2800.0  3000.0
+1200.0  1800.0  2300.0  2400.0  3200.0  3300.0
+1200.0  1800.0  2200.0  2300.0  3200.0  3300.0
+1200.0  1900.0  2300.0  2400.0  3100.0  3200.0
+1600.0  2100.0  2500.0  2700.0  3200.0  3300.0
+1500.0  1700.0  1900.0  2400.0  2800.0  3000.0
+1500.0  1700.0  1900.0  2500.0  2800.0  3000.0
+1500.0  1800.0  2100.0  2700.0  3000.0  3200.0
+2000.0  2200.0  2700.0  3000.0  3300.0  3400.0
+2100.0  2400.0  2800.0  3000.0  3400.0  3500.0
+2000.0  2200.0  2700.0  2900.0  3200.0  3300.0
+2100.0  2500.0  2800.0  3000.0  3400.0  3500.0
+2000.0  2300.0  2600.0  2700.0  3200.0  3300.0
+1900.0  2300.0  2600.0  2700.0  3200.0  3400.0
+1500.0  1800.0  2300.0  2600.0  3000.0  3300.0
+1400.0  1900.0  2400.0  2500.0  2700.0  3000.0
+2200.0  2300.0  2700.0  2900.0  3200.0  3300.0
+2100.0  2300.0  2700.0  2800.0  3200.0  3300.0
+2000.0  2300.0  2500.0  2700.0  3300.0  3400.0
+2300.0  2500.0  2800.0  3100.0  3400.0  3500.0
+2200.0  2600.0  2800.0  3100.0  3300.0  3400.0
+2200.0  2600.0  2700.0  3000.0  3300.0  3400.0
+1900.0  2200.0  2600.0  2700.0  3200.0  3300.0
+1700.0  2000.0  2400.0  2600.0  2900.0  3100.0
+1700.0  1800.0  2300.0  2500.0  2700.0  3000.0
+1500.0  1800.0  2200.0  2400.0  2800.0  3200.0
+1300.0  2100.0  2400.0  2700.0  3300.0  3400.0
+1200.0  1900.0  2400.0  2600.0  3100.0  3300.0
+1200.0  1500.0  2400.0  2500.0  3100.0  3400.0
+1400.0  1500.0  2400.0  2600.0  3000.0  3400.0
+1500.0  1600.0  2500.0  2600.0  3100.0  3400.0
+1600.0  2100.0  2400.0  2500.0  3100.0  3300.0
+1600.0  2200.0  2400.0  2600.0  3100.0  3300.0
+1800.0  2300.0  2600.0  2900.0  3200.0  3400.0
+2100.0  2200.0  2500.0  2700.0  2900.0  3200.0
+1700.0  2000.0  2300.0  2400.0  2700.0  3000.0
+2000.0  2200.0  2400.0  2700.0  3300.0  3400.0
+1500.0  2000.0  2300.0  2500.0  3300.0  3400.0
+1200.0  1700.0  2200.0  2400.0  3300.0  3400.0
+1400.0  1900.0  2000.0  2600.0  3200.0  3300.0
+1800.0  2000.0  2200.0  2600.0  3200.0  3300.0
+1200.0  2100.0  2300.0  2600.0  3300.0  3400.0
+1100.0  2100.0  2300.0  2600.0  3300.0  3400.0
+1900.0  2100.0  2600.0  2700.0  3100.0  3300.0
+1200.0  1600.0  2100.0  2400.0  3000.0  3300.0
+1200.0  1700.0  2100.0  2400.0  3100.0  3200.0
+1600.0  1700.0  2100.0  2300.0  2600.0  3000.0
+1900.0  2200.0  2300.0  2700.0  3200.0  3300.0
+1900.0  2000.0  2400.0  2500.0  2900.0  3200.0
+1500.0  1900.0  2100.0  2500.0  2900.0  3100.0
+1300.0  1900.0  2100.0  2400.0  3000.0  3100.0
+1800.0  2400.0  2800.0  3000.0  3400.0  3500.0
+1600.0  2000.0  2300.0  2800.0  3200.0  3300.0
+1500.0  1700.0  2200.0  2400.0  3000.0  3300.0
+1400.0  2100.0  2300.0  2500.0  3200.0  3400.0
+1700.0  2000.0  2500.0  2700.0  3000.0  3300.0
+1800.0  1900.0  2500.0  2700.0  3200.0  3300.0
+1400.0  1700.0  1900.0  2800.0  3100.0  3200.0
+1300.0  1600.0  1800.0  2600.0  3100.0  3200.0
+1300.0  1500.0  1600.0  2400.0  3100.0  3200.0
+1400.0  1600.0  1700.0  2200.0  3000.0  3100.0
+1700.0  1800.0  2200.0  2500.0  2900.0  3200.0
+1500.0  1900.0  2100.0  2400.0  3200.0  3300.0
+1800.0  2000.0  2100.0  2500.0  3200.0  3300.0
+1400.0  2000.0  2400.0  2500.0  3100.0  3200.0
+1200.0  1800.0  2500.0  2600.0  3100.0  3300.0
+1100.0  1800.0  2300.0  2600.0  3100.0  3300.0
+1400.0  1700.0  2300.0  2600.0  3100.0  3200.0
+1400.0  1600.0  2300.0  2600.0  3100.0  3200.0
+1500.0  1800.0  2500.0  2700.0  3100.0  3300.0
+1500.0  1900.0  2500.0  2700.0  3000.0  3200.0
+1600.0  1900.0  2500.0  2800.0  3200.0  3400.0
+1600.0  1700.0  2400.0  2700.0  2900.0  3200.0
+1500.0  1600.0  2100.0  2600.0  2800.0  3100.0
+1300.0  1500.0  1700.0  1900.0  3000.0  3100.0
+1400.0  1500.0  2200.0  2400.0  3100.0  3300.0
+1100.0  1400.0  2200.0  2500.0  3200.0  3300.0
+1200.0  1500.0  1700.0  1900.0  3200.0  3300.0
+1500.0  1700.0  2300.0  2700.0  3000.0  3300.0
+1900.0  2200.0  2700.0  2800.0  3100.0  3400.0
+1900.0  2200.0  2700.0  2900.0  3300.0  3500.0
+1400.0  1900.0  2300.0  2400.0  3000.0  3200.0
+1500.0  1600.0  2300.0  2600.0  2900.0  3200.0
+1800.0  2100.0  2700.0  2800.0  3200.0  3300.0
+1500.0  1700.0  2400.0  2800.0  3100.0  3300.0
+1700.0  1900.0  2700.0  2800.0  3300.0  3400.0
+1700.0  2100.0  2600.0  2800.0  3100.0  3400.0
+1700.0  2200.0  2700.0  2900.0  3200.0  3400.0
+1900.0  2100.0  2400.0  2800.0  3200.0  3400.0
+1800.0  2100.0  2300.0  2600.0  3000.0  3300.0
+1800.0  2000.0  2200.0  2500.0  3100.0  3300.0
+1400.0  1600.0  2300.0  2400.0  3200.0  3300.0
+1600.0  1800.0  2300.0  2400.0  2900.0  3100.0
+1800.0  2200.0  2700.0  2800.0  3100.0  3300.0
+1800.0  2100.0  2700.0  2800.0  3000.0  3300.0
+1800.0  2100.0  2700.0  2800.0  3100.0  3300.0
+1500.0  1900.0  2200.0  2500.0  3200.0  3300.0
+1200.0  1800.0  2200.0  2400.0  3100.0  3300.0
+1000.0  1400.0  2300.0  2400.0  3200.0  3300.0
+1100.0  1500.0  2200.0  2400.0  3200.0  3300.0
+1200.0  1500.0  2100.0  2200.0  3200.0  3300.0
+1900.0  2000.0  2300.0  2600.0  3200.0  3400.0
+1100.0  1500.0  2100.0  2200.0  3200.0  3300.0
+1500.0  2000.0  2600.0  2800.0  3200.0  3400.0
+1400.0  1600.0  2500.0  2800.0  3000.0  3300.0
+1500.0  1600.0  2500.0  2700.0  3100.0  3300.0
+1400.0  1700.0  2600.0  2800.0  3000.0  3300.0
+1100.0  1900.0  2200.0  2400.0  3100.0  3300.0
+1000.0  1800.0  2200.0  2400.0  3200.0  3300.0
+1000.0  1900.0  2200.0  2400.0  3200.0  3300.0
+1300.0  1600.0  1800.0  2000.0  3200.0  3300.0
+1300.0  1500.0  1800.0  1900.0  3200.0  3300.0
+1500.0  1700.0  2100.0  2500.0  3000.0  3300.0
+1700.0  1800.0  2400.0  2600.0  3100.0  3400.0
+1500.0  1600.0  2100.0  2600.0  2800.0  3200.0
+1500.0  1600.0  2200.0  2600.0  2800.0  3000.0
+1600.0  1700.0  2100.0  2500.0  2900.0  3100.0
+1500.0  1600.0  2100.0  2500.0  2800.0  3200.0
+1500.0  1600.0  2100.0  2500.0  2700.0  3100.0
+1500.0  1600.0  2100.0  2400.0  2800.0  3100.0
+1500.0  1700.0  2200.0  2400.0  2800.0  3100.0
+2000.0  2300.0  2600.0  2700.0  3200.0  3400.0
+1600.0  1800.0  2100.0  2600.0  3100.0  3300.0
+1600.0  1700.0  2200.0  2700.0  3100.0  3300.0
+1300.0  1800.0  2400.0  2600.0  3100.0  3300.0
+1300.0  1500.0  2400.0  2700.0  3000.0  3300.0
+1500.0  1600.0  1900.0  2600.0  2900.0  3000.0
+1800.0  1900.0  2200.0  2700.0  3000.0  3200.0
+1800.0  1900.0  2300.0  2700.0  3000.0  3300.0
+1800.0  1900.0  2400.0  2700.0  2900.0  3300.0
+1900.0  2000.0  2600.0  2700.0  3000.0  3200.0
+1900.0  2200.0  2700.0  2800.0  3000.0  3200.0
+1500.0  1600.0  2100.0  2500.0  2800.0  3100.0
+1100.0  1300.0  2400.0  2600.0  2800.0  3200.0
+1200.0  1500.0  2300.0  2600.0  3100.0  3300.0
+1200.0  1600.0  1800.0  2000.0  3200.0  3300.0
+1400.0  1600.0  1900.0  2000.0  3200.0  3300.0
+1300.0  1500.0  1700.0  1900.0  3200.0  3300.0
+2000.0  2200.0  2700.0  2800.0  3200.0  3400.0
+1500.0  1600.0  2400.0  2500.0  2900.0  3300.0
+1100.0  1700.0  2100.0  2300.0  3100.0  3200.0
+1500.0  1600.0  2100.0  2700.0  2900.0  3000.0
+1500.0  1900.0  2300.0  2600.0  2900.0  3000.0
+1600.0  2000.0  2200.0  2600.0  3100.0  3300.0
+1400.0  1600.0  1800.0  2000.0  3100.0  3200.0
+1900.0  2000.0  2300.0  2500.0  3000.0  3300.0
+1900.0  2100.0  2500.0  2700.0  3000.0  3100.0
+1900.0  2400.0  2700.0  2800.0  3200.0  3400.0
+1900.0  2500.0  2700.0  2800.0  3300.0  3400.0
+2000.0  2500.0  2800.0  2900.0  3300.0  3500.0
+2100.0  2600.0  2800.0  3000.0  3400.0  3500.0
+1500.0  1600.0  2300.0  2600.0  2900.0  3300.0
+1600.0  2100.0  2600.0  2800.0  3200.0  3300.0
+1300.0  1500.0  2300.0  2700.0  3000.0  3300.0
+1400.0  1800.0  2300.0  2500.0  2700.0  3100.0
+1400.0  1600.0  2400.0  2700.0  3200.0  3300.0
+1400.0  1500.0  2300.0  2600.0  3200.0  3300.0
+1400.0  1600.0  2200.0  2600.0  3200.0  3300.0
+1700.0  1800.0  2100.0  2300.0  3200.0  3400.0
+2100.0  2400.0  2700.0  2800.0  3100.0  3400.0
+2100.0  2400.0  2700.0  2800.0  3200.0  3400.0
+1600.0  1800.0  2600.0  2700.0  3000.0  3400.0
+1500.0  1700.0  2600.0  2700.0  2900.0  3300.0
+1600.0  1800.0  2600.0  2700.0  3000.0  3200.0
+1900.0  2500.0  2700.0  3000.0  3400.0  3500.0
+2000.0  2500.0  2600.0  3100.0  3300.0  3400.0
+2100.0  2300.0  2700.0  3000.0  3200.0  3400.0
+1600.0  1700.0  2100.0  2500.0  3100.0  3300.0
+1600.0  1700.0  2000.0  2400.0  3200.0  3300.0
+1600.0  1700.0  2000.0  2500.0  3200.0  3300.0
+2200.0  2500.0  2700.0  2900.0  3300.0  3400.0
+1200.0  1400.0  2100.0  2500.0  3000.0  3100.0
+1400.0  1700.0  2200.0  2400.0  3100.0  3300.0
+1300.0  1700.0  2000.0  2200.0  3100.0  3200.0
+1200.0  1600.0  1700.0  2100.0  3100.0  3200.0
+1800.0  2100.0  2700.0  2900.0  3100.0  3200.0
+1700.0  1800.0  2300.0  2800.0  2900.0  3100.0
+1900.0  2000.0  2300.0  2700.0  2900.0  3200.0
+2000.0  2100.0  2400.0  2700.0  3000.0  3200.0
+1800.0  1900.0  2400.0  2700.0  3100.0  3400.0
+1700.0  1800.0  2500.0  2800.0  3000.0  3300.0
+2200.0  2600.0  2800.0  2900.0  3300.0  3400.0
+1500.0  1700.0  2200.0  2500.0  3200.0  3300.0
+1300.0  1600.0  2200.0  2500.0  3100.0  3200.0
+1700.0  1900.0  2300.0  2700.0  3100.0  3200.0
+1700.0  1900.0  2400.0  2800.0  3000.0  3200.0
+1300.0  1800.0  2200.0  2600.0  3000.0  3300.0
+1200.0  1500.0  2300.0  2500.0  3200.0  3300.0
+1600.0  1800.0  2200.0  2400.0  3100.0  3400.0
+1300.0  1700.0  2200.0  2300.0  3100.0  3300.0
+1500.0  1700.0  2300.0  2500.0  3200.0  3300.0
+1500.0  1600.0  2400.0  2600.0  3200.0  3300.0
+1600.0  1700.0  2400.0  2700.0  3100.0  3400.0
+1600.0  1700.0  2300.0  2800.0  3000.0  3300.0
+1300.0  1700.0  2300.0  2600.0  2700.0  2900.0
+1500.0  1600.0  2200.0  2600.0  2800.0  3200.0
+1300.0  1700.0  2200.0  2400.0  3000.0  3200.0
+1400.0  1900.0  2300.0  2600.0  2900.0  3300.0
+1200.0  1400.0  2500.0  2600.0  3100.0  3400.0
+1500.0  1600.0  2200.0  2500.0  2700.0  3200.0
+1600.0  1700.0  2300.0  2500.0  2700.0  3300.0
+1100.0  1300.0  2200.0  2700.0  3000.0  3200.0
+1200.0  1300.0  2000.0  2700.0  2900.0  3100.0
+1800.0  2000.0  2700.0  2900.0  3100.0  3300.0
+1800.0  1900.0  2400.0  2800.0  3000.0  3300.0
+1900.0  2000.0  2400.0  2800.0  3000.0  3300.0
+2000.0  2100.0  2400.0  2700.0  2900.0  3100.0
+1700.0  1800.0  2300.0  2600.0  2700.0  3100.0
+1500.0  1700.0  2100.0  2500.0  2700.0  2900.0
+1400.0  1800.0  2400.0  2600.0  2800.0  3200.0
+2000.0  2100.0  2500.0  2900.0  3100.0  3300.0
+2000.0  2100.0  2600.0  2900.0  3100.0  3300.0
+2100.0  2200.0  2500.0  2800.0  3100.0  3300.0
+1900.0  2000.0  2500.0  2600.0  2900.0  3100.0
+1800.0  1900.0  2500.0  2700.0  2800.0  3100.0
+1900.0  2300.0  2800.0  2900.0  3300.0  3400.0
+1700.0  1800.0  2100.0  2200.0  3100.0  3200.0
+1800.0  1900.0  2200.0  2300.0  3100.0  3200.0
+1200.0  1700.0  2100.0  2300.0  3200.0  3300.0
+1400.0  1600.0  2000.0  2200.0  3000.0  3100.0
+1500.0  1600.0  2200.0  2500.0  2900.0  3100.0
+1900.0  2200.0  2400.0  2600.0  2800.0  3000.0
+1900.0  2100.0  2400.0  2700.0  2800.0  3000.0
+1900.0  2100.0  2300.0  2700.0  2900.0  3000.0
+1800.0  2000.0  2400.0  2900.0  3200.0  3300.0
+1600.0  1800.0  2200.0  2800.0  3200.0  3300.0
+1600.0  1700.0  2300.0  2500.0  2800.0  3100.0
+1600.0  1700.0  2100.0  2200.0  2700.0  3100.0
+1600.0  1700.0  2100.0  2200.0  2600.0  3100.0
+1900.0  2200.0  2400.0  2900.0  3300.0  3400.0
+1600.0  1800.0  2400.0  2500.0  2900.0  3200.0
+2000.0  2200.0  2400.0  2500.0  2800.0  3200.0
+2000.0  2400.0  2500.0  2700.0  2900.0  3100.0
+1900.0  2000.0  2200.0  2300.0  3100.0  3400.0
+2000.0  2100.0  2300.0  2600.0  3000.0  3200.0
+2000.0  2100.0  2500.0  2700.0  3000.0  3100.0
+1900.0  2000.0  2300.0  2600.0  2900.0  3000.0
+1300.0  1500.0  2300.0  2500.0  3000.0  3200.0
+1700.0  1800.0  2100.0  2600.0  2900.0  3000.0
+1700.0  1800.0  2200.0  2500.0  2700.0  3100.0
+1900.0  2400.0  2600.0  2700.0  3000.0  3100.0
+2000.0  2400.0  2500.0  2900.0  3200.0  3300.0
+1600.0  1700.0  2300.0  2600.0  2800.0  3100.0
+1900.0  2100.0  2600.0  3000.0  3200.0  3300.0
+1800.0  2300.0  2400.0  2600.0  3200.0  3300.0
+1900.0  2200.0  2300.0  2600.0  3200.0  3300.0
+1900.0  2400.0  2800.0  2900.0  3200.0  3400.0
+1800.0  2400.0  2700.0  2800.0  3200.0  3400.0
+1700.0  2100.0  2200.0  2600.0  3000.0  3100.0
+1900.0  2200.0  2500.0  2900.0  3200.0  3400.0
+1800.0  2400.0  2600.0  2700.0  3300.0  3400.0
+1900.0  2500.0  2700.0  2900.0  3300.0  3400.0
+1900.0  2400.0  2800.0  2900.0  3300.0  3400.0
+1800.0  2400.0  2800.0  2900.0  3200.0  3400.0
+1200.0  1300.0  2400.0  2800.0  2900.0  3100.0
+1600.0  1800.0  2000.0  2700.0  3200.0  3300.0
+1600.0  1800.0  2100.0  2700.0  3200.0  3300.0
+1600.0  1800.0  2300.0  2700.0  3200.0  3300.0
+1800.0  2100.0  2300.0  2800.0  3200.0  3300.0
+1500.0  1600.0  2100.0  2200.0  2800.0  3100.0
+1500.0  1600.0  2000.0  2200.0  2500.0  3100.0
+1400.0  1500.0  2200.0  2500.0  2700.0  3000.0
+1200.0  1400.0  2300.0  2600.0  2800.0  3100.0
+1700.0  1800.0  2100.0  2400.0  2800.0  3000.0
+1700.0  2100.0  2200.0  2600.0  2800.0  2900.0
+2000.0  2200.0  2400.0  2700.0  3000.0  3100.0
+1500.0  2100.0  2500.0  2600.0  3100.0  3200.0
+1800.0  2400.0  2500.0  2700.0  3200.0  3300.0
+1900.0  2400.0  2500.0  2700.0  3200.0  3300.0
+1900.0  2300.0  2400.0  2600.0  3200.0  3300.0
+1900.0  2000.0  2400.0  2700.0  3000.0  3100.0
+2000.0  2200.0  2700.0  2900.0  3100.0  3200.0
+1800.0  1900.0  2300.0  2800.0  3200.0  3300.0
+1900.0  2000.0  2200.0  2700.0  3200.0  3300.0
+1900.0  2100.0  2200.0  2700.0  3200.0  3300.0
+1600.0  2000.0  2200.0  2700.0  3200.0  3300.0
+1800.0  2000.0  2300.0  2800.0  3200.0  3300.0
+2000.0  2200.0  2500.0  2800.0  3200.0  3400.0
+1800.0  2100.0  2400.0  2900.0  3100.0  3200.0
+1700.0  1800.0  2300.0  2700.0  3000.0  3100.0
+1500.0  1700.0  2100.0  2300.0  2600.0  3100.0
+1400.0  1500.0  1800.0  1900.0  2400.0  3000.0
+1400.0  1500.0  1800.0  1900.0  2300.0  3000.0
+1400.0  1600.0  1900.0  2000.0  2600.0  3200.0
+1700.0  1800.0  2200.0  2300.0  2700.0  3100.0
+1500.0  1600.0  2100.0  2700.0  3100.0  3200.0
+1400.0  1500.0  2100.0  2700.0  3100.0  3200.0
+1700.0  1800.0  2200.0  2600.0  2900.0  3000.0
+1800.0  1900.0  2200.0  2600.0  2900.0  3000.0
+1400.0  1600.0  2100.0  2700.0  3200.0  3300.0
+1600.0  1800.0  2000.0  2500.0  2900.0  3100.0
+1600.0  1800.0  2400.0  2800.0  3100.0  3200.0
+1400.0  1900.0  2300.0  2700.0  3100.0  3200.0
+1900.0  2200.0  2500.0  2900.0  3300.0  3400.0
+1500.0  1600.0  2100.0  2800.0  3200.0  3300.0
+1400.0  1500.0  1700.0  1900.0  2800.0  3100.0
+1400.0  1600.0  2100.0  2600.0  2800.0  3100.0
+1500.0  1700.0  2300.0  2600.0  2800.0  3000.0
+1600.0  1700.0  2500.0  2700.0  3100.0  3200.0
+1600.0  1900.0  2400.0  2800.0  3000.0  3200.0
+1800.0  2300.0  2600.0  2700.0  3100.0  3300.0
+1900.0  2300.0  2500.0  2700.0  3100.0  3300.0
+1700.0  2000.0  2200.0  2600.0  3000.0  3100.0
+1600.0  1900.0  2100.0  2700.0  2900.0  3100.0
+1600.0  2200.0  2400.0  2700.0  3200.0  3300.0
+1700.0  2300.0  2500.0  2700.0  3200.0  3300.0
+1600.0  2100.0  2300.0  2500.0  3100.0  3200.0
+1700.0  2100.0  2300.0  2500.0  3100.0  3200.0
+1800.0  2200.0  2300.0  2600.0  3200.0  3300.0
+1700.0  2200.0  2400.0  2600.0  3300.0  3400.0
+1700.0  2200.0  2300.0  2600.0  3200.0  3300.0
+1800.0  1900.0  2300.0  2600.0  2900.0  3200.0
+1700.0  1800.0  2200.0  2400.0  2700.0  3000.0
+1800.0  1900.0  2200.0  2500.0  2700.0  3100.0
+1700.0  1900.0  2100.0  2600.0  3100.0  3200.0
+1900.0  2000.0  2300.0  2800.0  3200.0  3300.0
+1800.0  2000.0  2200.0  2700.0  3200.0  3300.0
+1700.0  1800.0  2100.0  2400.0  3200.0  3300.0
+1200.0  1500.0  2400.0  2700.0  2900.0  3000.0
+1700.0  1800.0  2100.0  2200.0  2500.0  3000.0
+1700.0  1800.0  2100.0  2200.0  2400.0  3000.0
+1600.0  1700.0  2000.0  2100.0  2400.0  3000.0
+1600.0  1700.0  1900.0  2000.0  2500.0  3000.0
+1700.0  1900.0  2100.0  2400.0  2600.0  2900.0
+1800.0  2000.0  2200.0  2400.0  2600.0  3000.0
+1600.0  1900.0  2400.0  2500.0  2900.0  3200.0
+1900.0  2100.0  2300.0  2700.0  3200.0  3300.0
+1900.0  2000.0  2300.0  2700.0  2800.0  3000.0
+1900.0  2000.0  2300.0  2700.0  2800.0  3100.0
+1500.0  1600.0  2300.0  2700.0  2900.0  3100.0
+1700.0  2200.0  2700.0  2800.0  3100.0  3300.0
+1600.0  2000.0  2600.0  2800.0  3200.0  3300.0
+1800.0  2200.0  2400.0  2600.0  3100.0  3200.0
+1600.0  2200.0  2600.0  2700.0  3000.0  3100.0
+2000.0  2200.0  2400.0  2600.0  2900.0  3100.0
+1400.0  1600.0  2000.0  2600.0  2800.0  3000.0
+1500.0  1600.0  2500.0  2700.0  3000.0  3100.0
+1300.0  1500.0  2200.0  2600.0  3100.0  3300.0
+1100.0  1600.0  2200.0  2500.0  3000.0  3200.0
+1200.0  1400.0  2200.0  2700.0  2800.0  3000.0
+1200.0  1400.0  2300.0  2600.0  2700.0  3000.0
+1600.0  1700.0  2000.0  2100.0  2600.0  3100.0
+1800.0  2300.0  2400.0  2600.0  2800.0  3100.0
+1700.0  2300.0  2700.0  2800.0  3200.0  3300.0
+1300.0  1600.0  2300.0  2700.0  2900.0  3000.0
+1500.0  1600.0  2200.0  2700.0  3000.0  3200.0
+1600.0  1700.0  2200.0  2700.0  3000.0  3100.0
+1900.0  2000.0  2300.0  2600.0  2800.0  3000.0
+1900.0  2100.0  2300.0  2600.0  2800.0  3000.0
+1500.0  1900.0  2500.0  2700.0  3000.0  3100.0
+1900.0  2400.0  2700.0  2900.0  3100.0  3300.0
+1300.0  1600.0  1800.0  2100.0  2900.0  3200.0
+1700.0  1800.0  2000.0  2200.0  3100.0  3200.0
+2000.0  2300.0  2700.0  3100.0  3300.0  3400.0
+1900.0  2200.0  2300.0  2600.0  3000.0  3200.0
+1900.0  2300.0  2800.0  3000.0  3200.0  3300.0
+2100.0  2300.0  2800.0  2900.0  3200.0  3300.0
+2000.0  2200.0  2800.0  2900.0  3200.0  3300.0
+1700.0  1900.0  2400.0  2800.0  3200.0  3300.0
+1500.0  1600.0  2200.0  2800.0  3200.0  3300.0
+1400.0  1500.0  2200.0  2500.0  2900.0  3200.0
+1300.0  1800.0  2200.0  2500.0  3100.0  3200.0
+1200.0  1800.0  2300.0  2700.0  3100.0  3200.0
+1500.0  1800.0  2500.0  2700.0  3200.0  3300.0
+1900.0  2300.0  2400.0  2700.0  2900.0  3100.0
+1900.0  2200.0  2400.0  2600.0  3000.0  3100.0
+1600.0  1800.0  2100.0  2800.0  3100.0  3200.0
+1800.0  2400.0  2600.0  2700.0  3000.0  3100.0
+1600.0  1700.0  1900.0  2000.0  2500.0  3100.0
+1800.0  1900.0  2100.0  2300.0  2900.0  3300.0
+1300.0  1700.0  2400.0  2700.0  3200.0  3300.0
+1500.0  2000.0  2500.0  2800.0  3100.0  3300.0
+1900.0  2300.0  2400.0  2600.0  3300.0  3400.0
+1900.0  2300.0  2500.0  2700.0  3200.0  3300.0
+1400.0  1600.0  2100.0  2800.0  3100.0  3200.0
+1500.0  1600.0  2100.0  2200.0  2700.0  3200.0
+1500.0  1600.0  1900.0  2000.0  2600.0  3100.0
+1400.0  1500.0  1900.0  2000.0  2600.0  3100.0
+1400.0  1600.0  1900.0  2000.0  2700.0  3200.0
+1700.0  1900.0  2100.0  2400.0  3000.0  3100.0
+1800.0  2000.0  2200.0  2400.0  2900.0  3200.0
+1700.0  2000.0  2200.0  2400.0  2800.0  3100.0
+1800.0  2000.0  2300.0  2700.0  2900.0  3200.0
+1700.0  2000.0  2200.0  2400.0  3000.0  3200.0
+1600.0  1900.0  2100.0  2300.0  3000.0  3200.0
+1700.0  1900.0  2100.0  2300.0  3000.0  3200.0
+1600.0  1900.0  2100.0  2400.0  3000.0  3200.0
+1700.0  1900.0  2200.0  2600.0  2900.0  3100.0
+1500.0  1800.0  1900.0  2400.0  2800.0  3000.0
+1700.0  2000.0  2400.0  2900.0  3100.0  3300.0
+1800.0  2000.0  2700.0  2900.0  3200.0  3400.0
+2000.0  2200.0  2600.0  2900.0  3100.0  3200.0
+1600.0  2200.0  2500.0  2700.0  3200.0  3300.0
+1800.0  2000.0  2200.0  2400.0  2600.0  3100.0
+1700.0  1800.0  2000.0  2100.0  2600.0  3100.0
+1600.0  1700.0  1900.0  2000.0  2700.0  3200.0
+1700.0  1900.0  2100.0  2300.0  2600.0  3100.0
+2000.0  2300.0  2500.0  2600.0  3200.0  3300.0
+1500.0  2100.0  2500.0  2700.0  3100.0  3200.0
+1500.0  2200.0  2500.0  2800.0  3200.0  3300.0
+1600.0  2200.0  2500.0  2800.0  3100.0  3200.0
+1500.0  2100.0  2400.0  2700.0  3100.0  3200.0
+1600.0  2100.0  2400.0  2700.0  3000.0  3100.0
+1800.0  2100.0  2400.0  2700.0  3000.0  3100.0
+1500.0  1600.0  2000.0  2600.0  3000.0  3200.0
+1400.0  1900.0  2400.0  2600.0  3000.0  3300.0
+1400.0  1500.0  2100.0  2600.0  3000.0  3100.0
+1300.0  1500.0  2300.0  2600.0  2800.0  3200.0
+1400.0  1600.0  2200.0  2600.0  3000.0  3200.0
+1700.0  1800.0  2200.0  2600.0  2900.0  3200.0
+1700.0  1800.0  2000.0  2600.0  2900.0  3100.0
+1600.0  1800.0  2000.0  2500.0  3000.0  3200.0
+1300.0  1500.0  2300.0  2700.0  3200.0  3300.0
+1500.0  1700.0  2300.0  2800.0  3200.0  3300.0
+1900.0  2000.0  2300.0  2400.0  3000.0  3200.0
+1700.0  1900.0  2200.0  2600.0  3000.0  3300.0
+1700.0  1800.0  2300.0  2600.0  2800.0  2900.0
+1600.0  1700.0  2000.0  2300.0  3100.0  3200.0
+1600.0  1700.0  2100.0  2400.0  3000.0  3200.0
+2000.0  2100.0  2400.0  2800.0  3100.0  3300.0
+1700.0  2200.0  2300.0  2700.0  3000.0  3100.0
+1700.0  2200.0  2400.0  2600.0  3000.0  3200.0
+1900.0  2300.0  2400.0  2600.0  3000.0  3200.0
+2100.0  2200.0  2600.0  2800.0  3200.0  3400.0
+2100.0  2200.0  2700.0  2900.0  3200.0  3400.0
+2000.0  2200.0  2800.0  3000.0  3200.0  3400.0
+2000.0  2200.0  2700.0  3000.0  3200.0  3400.0
+2000.0  2200.0  2700.0  2900.0  3200.0  3400.0
+1700.0  2100.0  2400.0  2900.0  3100.0  3200.0
+1500.0  1800.0  1900.0  2500.0  3000.0  3100.0
+1700.0  1800.0  2100.0  2400.0  2900.0  3300.0
+1800.0  2000.0  2300.0  2400.0  2700.0  3100.0
+1800.0  2100.0  2300.0  2800.0  3000.0  3200.0
+1600.0  2300.0  2500.0  2800.0  3100.0  3200.0
+1600.0  2100.0  2500.0  2600.0  3200.0  3300.0
+1700.0  1800.0  2100.0  2800.0  3000.0  3100.0
+1800.0  2300.0  2600.0  2700.0  3100.0  3200.0
+2000.0  2200.0  2800.0  3000.0  3300.0  3400.0
+2000.0  2200.0  2600.0  2800.0  3200.0  3400.0
+1700.0  1800.0  2200.0  2600.0  2800.0  3200.0
+1600.0  1800.0  2200.0  2500.0  2800.0  3200.0
+1600.0  1700.0  1900.0  2000.0  2600.0  3100.0
+1600.0  1700.0  2200.0  2800.0  3000.0  3200.0
+1700.0  1800.0  2400.0  2900.0  3100.0  3300.0
+1900.0  2200.0  2700.0  2900.0  3400.0  3500.0
+1700.0  1800.0  2000.0  2200.0  2900.0  3200.0
+1700.0  1900.0  2100.0  2300.0  2900.0  3200.0
+1200.0  1400.0  2200.0  2900.0  3100.0  3200.0
+1800.0  1900.0  2300.0  2600.0  2800.0  3200.0
+1600.0  1700.0  2000.0  2200.0  2700.0  3200.0
+1600.0  1700.0  2000.0  2200.0  2800.0  3200.0
+1600.0  1700.0  2000.0  2100.0  2800.0  3200.0
+1600.0  1800.0  2000.0  2100.0  2800.0  3200.0
+1700.0  1800.0  2000.0  2300.0  2900.0  3200.0
+1800.0  1900.0  2200.0  2600.0  3200.0  3300.0
+1800.0  2000.0  2200.0  2500.0  3200.0  3300.0
+1300.0  1500.0  1900.0  2600.0  3100.0  3200.0
+1300.0  1400.0  2000.0  2600.0  3200.0  3300.0
+1600.0  1700.0  2100.0  2700.0  3000.0  3200.0
+1400.0  1500.0  2000.0  2600.0  3100.0  3200.0
+1400.0  1500.0  2000.0  2700.0  3100.0  3200.0
+1500.0  1800.0  2400.0  2700.0  3000.0  3300.0
+1500.0  1600.0  2200.0  2300.0  2700.0  3300.0
+1400.0  1500.0  2200.0  2400.0  2700.0  3200.0
+1300.0  1500.0  2300.0  2600.0  2900.0  3200.0
+1400.0  1700.0  2400.0  2600.0  3000.0  3200.0
+1300.0  1600.0  2400.0  2500.0  2900.0  3200.0
+1400.0  1500.0  2200.0  2400.0  2900.0  3300.0
+1400.0  1600.0  2100.0  2200.0  3200.0  3300.0
+1400.0  1800.0  2200.0  2700.0  3200.0  3300.0
+1700.0  2000.0  2500.0  2600.0  3100.0  3200.0
+1500.0  1700.0  1900.0  2600.0  3200.0  3300.0
+1500.0  1600.0  1800.0  2000.0  2800.0  3200.0
+1500.0  1600.0  1900.0  2000.0  2700.0  3200.0
+1500.0  1600.0  1900.0  2000.0  2800.0  3200.0
+1600.0  1700.0  2000.0  2500.0  3000.0  3200.0
+1600.0  1700.0  2200.0  2700.0  2900.0  3200.0
+1300.0  1500.0  2300.0  2700.0  2900.0  3200.0
+1600.0  1700.0  2600.0  2800.0  2900.0  3200.0
+1300.0  1500.0  2300.0  2500.0  2800.0  3200.0
+1300.0  1400.0  2300.0  2500.0  2800.0  3200.0
+1500.0  1700.0  2200.0  2600.0  2700.0  3100.0
+1500.0  1700.0  2200.0  2600.0  2800.0  3000.0
+1500.0  1700.0  2000.0  2600.0  2700.0  3000.0
+1100.0  1300.0  2300.0  2800.0  3100.0  3200.0
+1600.0  1700.0  2100.0  2500.0  3200.0  3300.0
+1700.0  1800.0  2300.0  2700.0  3100.0  3200.0
+1900.0  2100.0  2300.0  2700.0  2900.0  3200.0
+1800.0  2000.0  2500.0  2800.0  3100.0  3400.0
+1900.0  2000.0  2800.0  2900.0  3300.0  3400.0
+1800.0  2000.0  2700.0  2800.0  3300.0  3400.0
+1700.0  1800.0  2100.0  2200.0  2600.0  3100.0
+1500.0  1600.0  1800.0  1900.0  2600.0  3200.0
+1600.0  1700.0  1900.0  2000.0  2600.0  3200.0
+1600.0  1700.0  2000.0  2100.0  2600.0  3200.0
+1700.0  1800.0  2000.0  2100.0  2800.0  3300.0
+1600.0  1900.0  2100.0  2400.0  3000.0  3100.0
+1600.0  1800.0  2300.0  2600.0  2900.0  3000.0
+1400.0  1500.0  2100.0  2600.0  2900.0  3100.0
+1400.0  1500.0  2200.0  2600.0  2900.0  3100.0
+1000.0  1200.0  2300.0  2900.0  3100.0  3200.0
+1300.0  1700.0  2400.0  2600.0  3000.0  3200.0
+1100.0  1600.0  2300.0  2600.0  3200.0  3300.0
+1200.0  1600.0  2300.0  2600.0  3100.0  3300.0
+1100.0  1600.0  2200.0  2600.0  3100.0  3300.0
+1600.0  2200.0  2400.0  2700.0  3100.0  3200.0
+1700.0  1800.0  2300.0  2700.0  2800.0  3000.0
+1400.0  1700.0  1900.0  2500.0  3200.0  3300.0
+1700.0  1900.0  2200.0  2400.0  2800.0  3000.0
+1400.0  1600.0  2100.0  2200.0  2700.0  3000.0
+1500.0  1700.0  2200.0  2400.0  2700.0  3100.0
+1500.0  1600.0  2200.0  2400.0  2800.0  3100.0
+1000.0  1900.0  2200.0  2500.0  3200.0  3300.0
+1200.0  1700.0  2100.0  2400.0  3200.0  3300.0
+1700.0  2000.0  2500.0  2600.0  3100.0  3400.0
+1600.0  2200.0  2400.0  2600.0  3200.0  3300.0
+2000.0  2500.0  2600.0  3000.0  3300.0  3400.0
+1400.0  1500.0  2100.0  2300.0  3200.0  3300.0
+1500.0  1700.0  2100.0  2400.0  3200.0  3300.0
+1500.0  1700.0  2200.0  2300.0  3300.0  3400.0
+1800.0  2200.0  2500.0  2700.0  3100.0  3400.0
+1500.0  1900.0  2300.0  2600.0  3200.0  3300.0
+2100.0  2200.0  2600.0  2900.0  3100.0  3300.0
+1500.0  1600.0  1800.0  2600.0  3200.0  3300.0
+1300.0  1500.0  1600.0  2200.0  3100.0  3200.0
+1200.0  1800.0  2300.0  2400.0  3000.0  3200.0
+1100.0  1900.0  2100.0  2500.0  3200.0  3300.0
+1400.0  1700.0  2200.0  2500.0  3100.0  3200.0
+1900.0  2100.0  2300.0  2600.0  3000.0  3300.0
+1900.0  2100.0  2500.0  2800.0  3300.0  3400.0
+1700.0  1900.0  2300.0  2500.0  3100.0  3400.0
+1500.0  1900.0  2200.0  2500.0  2900.0  3200.0
+1200.0  2000.0  2300.0  2400.0  2500.0  3100.0
+1200.0  2000.0  2300.0  2400.0  2600.0  3100.0
+1900.0  2200.0  2500.0  2600.0  3100.0  3300.0
+1900.0  2200.0  2500.0  2700.0  3200.0  3400.0
+1800.0  2100.0  2400.0  2500.0  3200.0  3300.0
+1800.0  2100.0  2300.0  2500.0  3300.0  3400.0
+1500.0  1700.0  1800.0  2500.0  3200.0  3300.0
+1400.0  1600.0  1800.0  2300.0  3200.0  3300.0
+1300.0  1600.0  2300.0  2400.0  3200.0  3400.0
+1200.0  1500.0  1700.0  2100.0  3100.0  3200.0
+2100.0  2300.0  2400.0  2800.0  3200.0  3300.0
+1500.0  2000.0  2300.0  2400.0  3100.0  3300.0
+1400.0  1600.0  2000.0  2100.0  3000.0  3300.0
+1900.0  2000.0  2200.0  2400.0  3000.0  3300.0
+1500.0  1800.0  2200.0  2300.0  3000.0  3300.0
+1300.0  1500.0  2100.0  2200.0  2800.0  3300.0
+1500.0  1800.0  2200.0  2400.0  3000.0  3300.0
+1600.0  1900.0  2300.0  2600.0  3200.0  3400.0
+1300.0  1800.0  2200.0  2500.0  3000.0  3200.0
+1100.0  1600.0  2200.0  2300.0  3100.0  3200.0
+1300.0  1500.0  2000.0  2200.0  3100.0  3300.0
+2300.0  2500.0  2900.0  3100.0  3200.0  3300.0
+2300.0  2400.0  2700.0  2800.0  3100.0  3300.0
+2000.0  2100.0  2400.0  2700.0  3200.0  3300.0
+1600.0  1700.0  1900.0  2100.0  3200.0  3300.0
+1600.0  1800.0  1900.0  2300.0  3200.0  3300.0
+1500.0  1600.0  1900.0  2600.0  3100.0  3200.0
+1300.0  1500.0  1900.0  2300.0  3000.0  3100.0
+1200.0  1600.0  2000.0  2100.0  3200.0  3300.0
+1300.0  2000.0  2200.0  2400.0  2700.0  3100.0
+1100.0  1900.0  2300.0  2400.0  3000.0  3100.0
+1200.0  1500.0  2300.0  2600.0  3100.0  3200.0
+1400.0  1600.0  1900.0  2500.0  3000.0  3100.0
+1300.0  1500.0  1600.0  2300.0  3200.0  3300.0
+1500.0  1800.0  2100.0  2400.0  3100.0  3200.0
+1900.0  2200.0  2500.0  2600.0  3200.0  3400.0
+1400.0  1500.0  2100.0  2300.0  2900.0  3200.0
+1100.0  1600.0  2100.0  2300.0  3100.0  3200.0
+1100.0  1600.0  2100.0  2300.0  3200.0  3300.0
+1000.0  1600.0  2200.0  2300.0  3100.0  3300.0
+1100.0  1600.0  2100.0  2300.0  3000.0  3100.0
+1100.0  1400.0  2300.0  2500.0  3200.0  3300.0
+1700.0  2100.0  2500.0  2800.0  3100.0  3400.0
+1300.0  1600.0  2300.0  2400.0  3200.0  3300.0
+1400.0  1700.0  2300.0  2400.0  3200.0  3300.0
+1500.0  1600.0  2300.0  2400.0  3000.0  3300.0
+1700.0  1900.0  2500.0  2600.0  3000.0  3200.0
+1100.0  1500.0  2400.0  2500.0  3100.0  3200.0
+1700.0  1900.0  2100.0  2400.0  3100.0  3300.0
+1300.0  1700.0  2200.0  2600.0  3100.0  3300.0
+1600.0  1700.0  2000.0  2200.0  3100.0  3300.0
+1800.0  2000.0  2200.0  2400.0  3200.0  3400.0
+1900.0  2100.0  2600.0  2800.0  3000.0  3200.0
+1900.0  2100.0  2600.0  2800.0  3100.0  3200.0
+1400.0  1900.0  2400.0  2500.0  3100.0  3300.0
+1100.0  2100.0  2300.0  2700.0  3100.0  3200.0
+1100.0  1800.0  2200.0  2500.0  3000.0  3100.0
+1100.0  1800.0  2200.0  2400.0  3000.0  3100.0
+1500.0  1800.0  2400.0  2500.0  3100.0  3300.0
+1500.0  2000.0  2400.0  2500.0  3200.0  3400.0
+1800.0  2000.0  2500.0  2600.0  3000.0  3300.0
+1900.0  2400.0  2600.0  2900.0  3200.0  3400.0
+1500.0  2100.0  2500.0  2700.0  3200.0  3300.0
+1400.0  2100.0  2400.0  2700.0  3100.0  3200.0
+1500.0  2100.0  2500.0  2700.0  3000.0  3200.0
+1600.0  2100.0  2500.0  2600.0  3100.0  3300.0
+1500.0  1800.0  2100.0  2700.0  3100.0  3300.0
+1300.0  1600.0  1800.0  2500.0  3200.0  3300.0
+1300.0  1500.0  1600.0  2800.0  3300.0  3400.0
+1300.0  1400.0  2200.0  2300.0  3100.0  3300.0
+1300.0  1600.0  2400.0  2500.0  3000.0  3300.0
+1700.0  1800.0  2300.0  2500.0  3200.0  3400.0
+1400.0  2000.0  2100.0  2400.0  3000.0  3100.0
+1300.0  1900.0  2100.0  2400.0  3100.0  3200.0
+1600.0  1700.0  2200.0  2600.0  3200.0  3300.0
+1400.0  1800.0  2300.0  2400.0  2900.0  3200.0
+1300.0  1600.0  2200.0  2400.0  3000.0  3200.0
+1200.0  1900.0  2200.0  2500.0  3100.0  3200.0
+1500.0  1600.0  2200.0  2400.0  3100.0  3300.0
+1000.0  1600.0  2500.0  2600.0  3100.0  3200.0
+900.0  1600.0  2500.0  2600.0  3200.0  3300.0
+1400.0  1700.0  2500.0  2700.0  3100.0  3300.0
+1300.0  1900.0  2500.0  2700.0  3200.0  3300.0
+1600.0  2000.0  2400.0  2500.0  2900.0  3100.0
+1400.0  1600.0  2500.0  2600.0  3200.0  3400.0
+1400.0  1600.0  2600.0  2700.0  3100.0  3300.0
+1400.0  1600.0  2600.0  2700.0  3100.0  3400.0
+1600.0  2100.0  2600.0  2900.0  3300.0  3400.0
+1800.0  2100.0  2800.0  3000.0  3300.0  3400.0
+1800.0  2300.0  2700.0  2900.0  3400.0  3500.0
+1800.0  2400.0  2900.0  3100.0  3300.0  3400.0
+1200.0  1800.0  2300.0  2400.0  3000.0  3100.0
+1300.0  1600.0  2400.0  2500.0  3100.0  3200.0
+1400.0  1800.0  2400.0  2500.0  3200.0  3400.0
+2000.0  2500.0  2700.0  3100.0  3300.0  3400.0
+1900.0  2000.0  2400.0  2800.0  3100.0  3300.0
+1500.0  1800.0  1900.0  2500.0  3100.0  3200.0
+1600.0  1800.0  2000.0  2600.0  3100.0  3200.0
+1700.0  2000.0  2200.0  2700.0  3000.0  3100.0
+1700.0  2000.0  2300.0  2600.0  2900.0  3000.0
+2300.0  2400.0  2700.0  2900.0  3200.0  3300.0
+1200.0  1600.0  2200.0  2300.0  3000.0  3100.0
+1400.0  2000.0  2300.0  2500.0  3100.0  3200.0
+1500.0  1900.0  2300.0  2400.0  3100.0  3200.0
+1300.0  1700.0  1800.0  2400.0  2900.0  3000.0
+1300.0  1500.0  1600.0  2200.0  2800.0  2900.0
+1900.0  2100.0  2500.0  2700.0  3000.0  3300.0
+1500.0  1900.0  2400.0  2600.0  2900.0  3300.0
+1400.0  1800.0  2300.0  2500.0  3100.0  3300.0
+1300.0  1800.0  2500.0  2700.0  3100.0  3300.0
+1300.0  1800.0  2400.0  2600.0  3100.0  3200.0
+1200.0  1700.0  2400.0  2500.0  2900.0  3100.0
+1100.0  1800.0  2000.0  2200.0  3000.0  3100.0
+1300.0  1600.0  1700.0  2600.0  3100.0  3200.0
+1700.0  1900.0  2200.0  2400.0  3000.0  3200.0
+1700.0  1900.0  2300.0  2400.0  3000.0  3100.0
+1800.0  1900.0  2400.0  2500.0  3000.0  3100.0
+1500.0  2200.0  2500.0  2700.0  3300.0  3400.0
+1900.0  2500.0  2700.0  3000.0  3300.0  3400.0
+1400.0  2000.0  2500.0  2600.0  3300.0  3400.0
+1400.0  1800.0  2100.0  2500.0  3000.0  3100.0
+1200.0  1500.0  1600.0  2600.0  3100.0  3200.0
+1300.0  1600.0  1700.0  2300.0  3100.0  3200.0
+1300.0  1600.0  1700.0  2200.0  3100.0  3200.0
+1200.0  1500.0  1600.0  2200.0  3100.0  3200.0
+1200.0  1500.0  1600.0  2300.0  3000.0  3100.0
+1300.0  1800.0  2400.0  2600.0  3000.0  3200.0
+1300.0  1800.0  2200.0  2400.0  3100.0  3300.0
+1400.0  1800.0  2200.0  2400.0  3100.0  3300.0
+1600.0  1700.0  2100.0  2300.0  2700.0  3100.0
+1700.0  1800.0  2100.0  2300.0  2700.0  3200.0
+1700.0  1800.0  2200.0  2300.0  2800.0  3200.0
+1700.0  2200.0  2400.0  2800.0  3100.0  3200.0
+1100.0  2000.0  2200.0  2400.0  3000.0  3100.0
+1100.0  1900.0  2000.0  2400.0  3000.0  3100.0
+1300.0  1500.0  1600.0  2700.0  3200.0  3300.0
+1300.0  1500.0  1600.0  2600.0  3300.0  3400.0
+1600.0  1700.0  2000.0  2600.0  3100.0  3200.0
+1700.0  2200.0  2500.0  2700.0  2900.0  3200.0
+1100.0  1700.0  2200.0  2300.0  3100.0  3200.0
+1100.0  1800.0  2100.0  2200.0  3100.0  3200.0
+1100.0  1600.0  2000.0  2100.0  3100.0  3200.0
+1100.0  1600.0  1900.0  2100.0  3100.0  3200.0
+1200.0  1600.0  1800.0  2000.0  3100.0  3200.0
+1300.0  1600.0  1700.0  2000.0  3100.0  3200.0
+1300.0  1600.0  1700.0  2000.0  3000.0  3100.0
+1200.0  1500.0  1600.0  2000.0  3000.0  3100.0
+1500.0  1700.0  1900.0  2400.0  2800.0  2900.0
+1600.0  2000.0  2300.0  2600.0  2900.0  3100.0
+2200.0  2400.0  2700.0  2800.0  3100.0  3300.0
+1700.0  2100.0  2300.0  2400.0  2800.0  3200.0
+1600.0  1800.0  2300.0  2400.0  2800.0  3200.0
+1000.0  2000.0  2600.0  2700.0  3200.0  3300.0
+1000.0  1900.0  2800.0  2900.0  3300.0  3400.0
+1400.0  1600.0  1800.0  2400.0  2700.0  3000.0
+1800.0  2000.0  2300.0  2500.0  2900.0  3100.0
+1200.0  1800.0  2600.0  2700.0  3200.0  3300.0
+1300.0  1800.0  2400.0  2500.0  3000.0  3300.0
+1500.0  1900.0  2500.0  2700.0  3200.0  3400.0
+1400.0  1800.0  2500.0  2600.0  3100.0  3300.0
+1600.0  1800.0  2200.0  2300.0  3100.0  3200.0
+1700.0  1800.0  2100.0  2400.0  2700.0  3100.0
+1700.0  1900.0  2200.0  2500.0  2700.0  3100.0
+1300.0  1400.0  2200.0  2800.0  3100.0  3200.0
+1700.0  2100.0  2300.0  2500.0  2800.0  3100.0
+1500.0  1600.0  2200.0  2700.0  2900.0  3100.0
+1200.0  1400.0  2200.0  2800.0  3000.0  3200.0
+1200.0  1400.0  2300.0  2800.0  3100.0  3200.0
+1900.0  2000.0  2600.0  2800.0  3100.0  3300.0
+1900.0  2100.0  2500.0  2800.0  3000.0  3300.0
+2100.0  2300.0  2500.0  2700.0  2900.0  3200.0
+1900.0  2000.0  2700.0  2900.0  3100.0  3400.0
+1900.0  2000.0  2600.0  2900.0  3200.0  3300.0
+1900.0  2000.0  2600.0  2900.0  3200.0  3400.0
+900.0  1500.0  2500.0  2600.0  3200.0  3400.0
+1800.0  1900.0  2400.0  2800.0  2900.0  3100.0
+1600.0  1900.0  2300.0  2600.0  2900.0  3100.0
+1400.0  1500.0  2000.0  2400.0  2900.0  3100.0
+1500.0  1800.0  2200.0  2400.0  2600.0  2800.0
+2000.0  2400.0  2800.0  2900.0  3100.0  3400.0
+1900.0  2300.0  2800.0  2900.0  3100.0  3300.0
+1200.0  1400.0  1900.0  2600.0  3100.0  3200.0
+2100.0  2300.0  2800.0  2900.0  3100.0  3200.0
+2000.0  2400.0  2600.0  2700.0  3100.0  3300.0
+2000.0  2400.0  2600.0  2700.0  3000.0  3200.0
+2000.0  2300.0  2600.0  2700.0  2900.0  3200.0
+1800.0  1900.0  2300.0  2600.0  2800.0  3000.0
+2000.0  2300.0  2500.0  2800.0  3000.0  3200.0
+1700.0  2000.0  2200.0  2600.0  2800.0  3000.0
+1900.0  2000.0  2400.0  2800.0  2900.0  3100.0
+2200.0  2600.0  2800.0  2900.0  3200.0  3400.0
+1600.0  1700.0  2200.0  2400.0  2700.0  3200.0
+1500.0  1600.0  2300.0  2400.0  2700.0  3200.0
+1300.0  1500.0  2200.0  2500.0  2700.0  3100.0
+1700.0  1800.0  2100.0  2200.0  2700.0  3200.0
+1900.0  2000.0  2600.0  2900.0  3000.0  3200.0
+1800.0  2100.0  2400.0  2500.0  2800.0  3100.0
+1400.0  1500.0  2200.0  2500.0  2700.0  3100.0
+1500.0  1600.0  2200.0  2400.0  2700.0  3100.0
+1700.0  1800.0  2300.0  2400.0  2700.0  3100.0
+1900.0  2000.0  2300.0  2500.0  2700.0  3100.0
+1900.0  2200.0  2400.0  2700.0  2800.0  3100.0
+1600.0  1700.0  2200.0  2600.0  2700.0  3100.0
+2100.0  2400.0  2600.0  2800.0  3000.0  3200.0
+2100.0  2300.0  2700.0  2800.0  3200.0  3400.0
+1800.0  2300.0  2600.0  2800.0  3000.0  3200.0
+2000.0  2200.0  2400.0  2700.0  3000.0  3300.0
+1900.0  2200.0  2400.0  2600.0  3000.0  3300.0
+1700.0  2000.0  2300.0  2600.0  2800.0  3000.0
+1600.0  1800.0  2100.0  2500.0  2700.0  3000.0
+1600.0  1700.0  2300.0  2600.0  2800.0  3000.0
+1600.0  1700.0  2400.0  2600.0  2800.0  3000.0
+2000.0  2300.0  2600.0  2700.0  3300.0  3400.0
+1700.0  1800.0  2100.0  2500.0  3000.0  3300.0
+1300.0  1500.0  2300.0  2400.0  3000.0  3300.0
+1500.0  1600.0  1900.0  2100.0  3000.0  3100.0
+1900.0  2000.0  2500.0  2800.0  3100.0  3200.0
+2000.0  2400.0  2900.0  3000.0  3200.0  3400.0
+1700.0  1800.0  2100.0  2500.0  2700.0  3100.0
+1500.0  2000.0  2400.0  2500.0  3000.0  3300.0
+1500.0  1600.0  2300.0  2400.0  2700.0  3100.0
+1600.0  1700.0  2300.0  2400.0  2700.0  3200.0
+1700.0  1800.0  2200.0  2500.0  2600.0  3000.0
+1800.0  1900.0  2200.0  2500.0  2700.0  3000.0
+1800.0  1900.0  2200.0  2600.0  2700.0  3000.0
+1800.0  2200.0  2500.0  2700.0  2900.0  3200.0
+1200.0  1600.0  2500.0  2600.0  3000.0  3300.0
+1000.0  1300.0  2400.0  2900.0  3100.0  3200.0
+1300.0  1600.0  2500.0  2800.0  3000.0  3200.0
+1800.0  2100.0  2600.0  2800.0  3000.0  3300.0
+1300.0  1600.0  2500.0  2800.0  2900.0  3200.0
+1200.0  1500.0  2300.0  2700.0  2900.0  3200.0
+1200.0  1400.0  2300.0  2700.0  2900.0  3200.0
+1400.0  1600.0  2100.0  2500.0  3100.0  3300.0
+1700.0  2300.0  2600.0  2800.0  3100.0  3200.0
+2000.0  2200.0  2400.0  2700.0  2800.0  3100.0
+1400.0  1500.0  2300.0  2800.0  3000.0  3100.0
+1500.0  1600.0  2300.0  2800.0  2900.0  3100.0
+1500.0  1600.0  2400.0  2800.0  2900.0  3100.0
+1700.0  1800.0  2200.0  2700.0  2800.0  3000.0
+1800.0  1900.0  2600.0  2700.0  2900.0  3200.0
+1800.0  2000.0  2700.0  2800.0  3200.0  3400.0
+1800.0  2000.0  2600.0  2800.0  3000.0  3300.0
+1700.0  1800.0  2400.0  2600.0  2900.0  3100.0
+2000.0  2200.0  2500.0  2600.0  3000.0  3100.0
+2000.0  2100.0  2500.0  2900.0  3200.0  3300.0
+1800.0  2000.0  2600.0  2900.0  3100.0  3300.0
+1700.0  1900.0  2200.0  2700.0  2800.0  3000.0
+1700.0  2000.0  2500.0  2600.0  3200.0  3300.0
+1400.0  1600.0  2300.0  2500.0  2700.0  3100.0
+1900.0  2300.0  2800.0  3000.0  3400.0  3500.0
+1600.0  1800.0  2300.0  2400.0  2800.0  3300.0
+1600.0  1700.0  2200.0  2400.0  2800.0  3000.0
+1600.0  1700.0  2300.0  2600.0  3000.0  3100.0
+1800.0  2100.0  2700.0  2900.0  3300.0  3500.0
+1600.0  1700.0  2300.0  2800.0  2900.0  3100.0
+1300.0  1500.0  2200.0  2700.0  2900.0  3100.0
+1200.0  1400.0  2500.0  2900.0  3000.0  3200.0
+1900.0  2200.0  2400.0  2700.0  3200.0  3400.0
+1800.0  2000.0  2600.0  2900.0  3100.0  3400.0
+1600.0  1700.0  2100.0  2600.0  2700.0  3100.0
+1500.0  1600.0  2300.0  2500.0  2700.0  3100.0
+1500.0  1600.0  2200.0  2800.0  3100.0  3300.0
+1300.0  1500.0  2000.0  2700.0  3100.0  3200.0
+1300.0  1500.0  1900.0  2600.0  3200.0  3300.0
+1300.0  1400.0  2000.0  2400.0  3200.0  3300.0
+1300.0  1400.0  2000.0  2300.0  3100.0  3300.0
+1300.0  1500.0  2000.0  2300.0  3100.0  3200.0
+1800.0  2000.0  2200.0  2400.0  3100.0  3300.0
+1700.0  1900.0  2300.0  2400.0  2800.0  3300.0
+1200.0  2200.0  2500.0  2700.0  3200.0  3300.0
+1300.0  2100.0  2300.0  2700.0  3200.0  3300.0
+1400.0  2200.0  2400.0  2900.0  3300.0  3400.0
+1500.0  2100.0  2400.0  2600.0  3200.0  3300.0
+1200.0  1900.0  2400.0  2500.0  3000.0  3200.0
+1200.0  2000.0  2400.0  2600.0  3000.0  3200.0
+1200.0  1900.0  2400.0  2500.0  3200.0  3300.0
+2000.0  2300.0  2700.0  3000.0  3200.0  3400.0
+1900.0  2100.0  2600.0  3000.0  3300.0  3400.0
+1500.0  1900.0  2200.0  2600.0  3000.0  3300.0
+1400.0  1800.0  2200.0  2500.0  3000.0  3300.0
+1800.0  2000.0  2300.0  2400.0  3300.0  3400.0
+1600.0  2100.0  2300.0  2400.0  3100.0  3300.0
+1900.0  2300.0  2800.0  3000.0  3200.0  3400.0
+1700.0  2100.0  2400.0  2700.0  3100.0  3400.0
+1400.0  1800.0  2300.0  2600.0  3200.0  3400.0
+1700.0  2000.0  2200.0  2400.0  3100.0  3200.0
+1500.0  1800.0  2200.0  2500.0  3000.0  3300.0
+1700.0  1900.0  2200.0  2600.0  2900.0  3200.0
+1400.0  1900.0  2200.0  2400.0  3100.0  3200.0
+1500.0  1900.0  2200.0  2400.0  3100.0  3200.0
+1600.0  2100.0  2300.0  2700.0  3100.0  3200.0
+1600.0  1700.0  1900.0  2800.0  3000.0  3100.0
+1500.0  1700.0  1900.0  2600.0  3000.0  3100.0
+1500.0  1600.0  2100.0  2600.0  3200.0  3300.0
+2200.0  2300.0  2600.0  2900.0  3100.0  3300.0
+1900.0  2200.0  2400.0  2700.0  3000.0  3300.0
+1400.0  1700.0  2300.0  2400.0  3000.0  3100.0
+1900.0  2000.0  2400.0  2500.0  3100.0  3200.0
+2000.0  2500.0  2600.0  2800.0  3300.0  3400.0
+2000.0  2400.0  2600.0  3000.0  3200.0  3300.0
+1500.0  1800.0  2300.0  2500.0  2900.0  3200.0
+1300.0  1900.0  2200.0  2300.0  3000.0  3200.0
+1600.0  1700.0  2500.0  2800.0  3200.0  3400.0
+1500.0  1900.0  2500.0  2600.0  3300.0  3400.0
+1900.0  2200.0  2500.0  2700.0  3000.0  3300.0
+1300.0  1600.0  1800.0  2100.0  3000.0  3100.0
+1000.0  1900.0  2200.0  2500.0  3100.0  3200.0
+1200.0  2000.0  2300.0  2600.0  3300.0  3400.0
+1400.0  1600.0  1800.0  2600.0  2900.0  3100.0
+1400.0  1700.0  2000.0  2600.0  3100.0  3200.0
+1300.0  1800.0  2000.0  2700.0  3200.0  3300.0
+1700.0  2000.0  2300.0  2400.0  2700.0  3100.0
+1700.0  1800.0  2000.0  2400.0  3100.0  3200.0
+1800.0  1900.0  2100.0  2500.0  3100.0  3300.0
+1800.0  1900.0  2300.0  2500.0  2800.0  3100.0
+1600.0  1800.0  2100.0  2400.0  2700.0  2800.0
+1300.0  1700.0  2100.0  2200.0  3100.0  3300.0
+1300.0  1700.0  2100.0  2200.0  3000.0  3200.0
+1500.0  1800.0  2200.0  2400.0  2700.0  3200.0
+1600.0  1800.0  2200.0  2300.0  2900.0  3200.0
+1500.0  1800.0  2100.0  2400.0  2900.0  3200.0
+1400.0  1700.0  1900.0  2200.0  2800.0  2900.0
+1500.0  1800.0  2100.0  2500.0  3000.0  3100.0
+1500.0  1900.0  2100.0  2500.0  3000.0  3100.0
+1500.0  2000.0  2200.0  2700.0  3200.0  3300.0
+1400.0  1800.0  2200.0  2500.0  3200.0  3300.0
+1500.0  2000.0  2200.0  2400.0  2900.0  3200.0
+1800.0  2000.0  2700.0  2900.0  3300.0  3400.0
+1500.0  1800.0  2100.0  2500.0  3200.0  3300.0
+1400.0  1700.0  1800.0  2200.0  3100.0  3200.0
+1400.0  1600.0  1700.0  2300.0  3000.0  3100.0
+1300.0  2000.0  2100.0  2700.0  3100.0  3200.0
+1400.0  1800.0  2200.0  2500.0  3100.0  3200.0
+1400.0  1700.0  1800.0  2300.0  3000.0  3100.0
+1600.0  1700.0  1900.0  2600.0  3000.0  3100.0
+1800.0  2100.0  2300.0  2700.0  3300.0  3400.0
+1700.0  2100.0  2300.0  2700.0  3300.0  3400.0
+1800.0  2100.0  2300.0  2400.0  2700.0  3100.0
+1500.0  1700.0  1900.0  2600.0  3100.0  3200.0
+1300.0  2000.0  2200.0  2800.0  3200.0  3300.0
+1700.0  1900.0  2600.0  2900.0  3200.0  3400.0
+1200.0  1800.0  2600.0  2700.0  3100.0  3200.0
+1900.0  2000.0  2200.0  2500.0  3200.0  3400.0
+1300.0  1700.0  2300.0  2400.0  2900.0  3200.0
+1200.0  1600.0  2200.0  2400.0  2800.0  3100.0
+1200.0  1800.0  2200.0  2600.0  3200.0  3300.0
+1300.0  1800.0  2300.0  2700.0  3300.0  3400.0
+1700.0  2000.0  2400.0  2500.0  3000.0  3200.0
+1600.0  1900.0  2200.0  2300.0  2900.0  3100.0
+1400.0  1700.0  1900.0  2400.0  3000.0  3100.0
+1600.0  1900.0  2400.0  2700.0  3300.0  3400.0
+1800.0  2300.0  2700.0  3000.0  3200.0  3400.0
+1300.0  1700.0  2300.0  2600.0  3000.0  3300.0
+1200.0  1800.0  2200.0  2600.0  3100.0  3300.0
+1700.0  2000.0  2400.0  2800.0  3100.0  3200.0
+1700.0  1800.0  2100.0  2400.0  2600.0  3000.0
+1600.0  1700.0  2100.0  2400.0  2600.0  3000.0
+1700.0  1900.0  2200.0  2400.0  2800.0  3200.0
+1700.0  2100.0  2300.0  2700.0  2800.0  3000.0
+1600.0  1900.0  2100.0  2600.0  2900.0  3000.0
+1800.0  2000.0  2700.0  2800.0  3100.0  3400.0
+1500.0  1600.0  2200.0  2800.0  3000.0  3100.0
+1300.0  1500.0  2100.0  2700.0  3000.0  3100.0
+1500.0  1800.0  2300.0  2600.0  3000.0  3100.0
+1600.0  1700.0  2300.0  2700.0  2900.0  3000.0
+1600.0  1800.0  2200.0  2600.0  2800.0  3100.0
+1500.0  1600.0  2300.0  2600.0  2900.0  3100.0
+1600.0  1800.0  2200.0  2700.0  3000.0  3300.0
+2100.0  2200.0  2600.0  2700.0  2900.0  3100.0
+1800.0  1900.0  2300.0  2700.0  2800.0  3000.0
+1800.0  1900.0  2200.0  2700.0  2800.0  3000.0
+1500.0  1800.0  2000.0  2600.0  3000.0  3100.0
+1500.0  1700.0  2100.0  2500.0  2700.0  3000.0
+1500.0  1600.0  1900.0  2000.0  2400.0  3100.0
+1200.0  1500.0  2100.0  2200.0  2700.0  3200.0
+1300.0  1700.0  2400.0  2700.0  3000.0  3200.0
+1600.0  1700.0  2400.0  2800.0  2900.0  3200.0
+1500.0  1800.0  2000.0  2500.0  2900.0  3200.0
+1800.0  2000.0  2200.0  2500.0  2700.0  3000.0
+1800.0  1900.0  2300.0  2600.0  2700.0  3200.0
+1500.0  1700.0  2200.0  2700.0  2900.0  3200.0
+1300.0  1400.0  2100.0  2600.0  3000.0  3200.0
+1400.0  1500.0  2100.0  2700.0  3000.0  3200.0
+1500.0  1600.0  2300.0  2800.0  3000.0  3300.0
+1700.0  1800.0  2300.0  2600.0  2900.0  3300.0
+1600.0  1700.0  2100.0  2400.0  2900.0  3300.0
+1500.0  1600.0  1900.0  2100.0  2500.0  3100.0
+1700.0  1900.0  2100.0  2400.0  2700.0  3100.0
+1400.0  1500.0  2100.0  2800.0  3100.0  3200.0
+1400.0  1600.0  2100.0  2800.0  3000.0  3200.0
+1700.0  1800.0  2100.0  2700.0  2800.0  3100.0
+1600.0  1700.0  2100.0  2600.0  2700.0  3000.0
+1500.0  1600.0  2100.0  2600.0  2700.0  3100.0
+1600.0  1700.0  2000.0  2500.0  2900.0  3200.0
+1900.0  2000.0  2300.0  2400.0  2700.0  3100.0
+1900.0  2100.0  2300.0  2500.0  2700.0  3100.0
+1900.0  2100.0  2400.0  2600.0  2800.0  3100.0
+1700.0  2200.0  2400.0  2700.0  3100.0  3200.0
+1600.0  2000.0  2600.0  2900.0  3200.0  3300.0
+2000.0  2100.0  2300.0  2500.0  2800.0  3100.0
+1800.0  1900.0  2200.0  2400.0  2800.0  3200.0
+1900.0  2100.0  2700.0  2900.0  3200.0  3400.0
+1800.0  2100.0  2300.0  2800.0  2900.0  3100.0
+1800.0  2000.0  2200.0  2700.0  2900.0  3000.0
+1800.0  1900.0  2200.0  2700.0  2900.0  3000.0
+2100.0  2200.0  2600.0  2800.0  3000.0  3200.0
+1600.0  1700.0  2100.0  2400.0  2700.0  3100.0
+1800.0  2000.0  2200.0  2300.0  2600.0  3100.0
+1700.0  1900.0  2300.0  2600.0  2700.0  3000.0
+1800.0  2000.0  2300.0  2500.0  2900.0  3200.0
+1200.0  1400.0  2300.0  2700.0  3100.0  3300.0
+1600.0  1800.0  2300.0  2800.0  3000.0  3200.0
+1600.0  1800.0  2300.0  2700.0  3000.0  3100.0
+1700.0  1800.0  2300.0  2700.0  2900.0  3000.0
+1400.0  1500.0  2000.0  2200.0  2900.0  3200.0
+2000.0  2300.0  2400.0  2700.0  2900.0  3100.0
+1400.0  2100.0  2400.0  2800.0  3100.0  3200.0
+1500.0  1600.0  1900.0  2100.0  2900.0  3200.0
+1500.0  1700.0  2400.0  2600.0  3000.0  3200.0
+1300.0  1500.0  2300.0  2700.0  3100.0  3300.0
+1600.0  2100.0  2300.0  2600.0  3000.0  3200.0
+1900.0  2300.0  2400.0  2700.0  3000.0  3100.0
+1700.0  2300.0  2600.0  2900.0  3200.0  3300.0
+1700.0  2000.0  2200.0  2600.0  2800.0  3100.0
+1800.0  1900.0  2200.0  2600.0  2800.0  3100.0
+2000.0  2100.0  2500.0  2800.0  3000.0  3300.0
+2000.0  2100.0  2700.0  2900.0  3100.0  3300.0
+2100.0  2300.0  2800.0  2900.0  3100.0  3300.0
+1800.0  1900.0  2100.0  2500.0  2800.0  3200.0
+1700.0  1800.0  2200.0  2500.0  2700.0  3000.0
+1500.0  1700.0  2100.0  2500.0  2800.0  3100.0
+1800.0  2100.0  2400.0  2900.0  3200.0  3300.0
+1800.0  2100.0  2700.0  2900.0  3100.0  3300.0
+1700.0  2000.0  2200.0  2500.0  2800.0  3100.0
+1300.0  1900.0  2200.0  2600.0  2800.0  3000.0
+1400.0  1900.0  2300.0  2700.0  2900.0  3200.0
+1800.0  2200.0  2500.0  2800.0  3000.0  3100.0
+1800.0  2300.0  2600.0  2700.0  3000.0  3200.0
+1500.0  1700.0  2200.0  2500.0  2800.0  3100.0
+1500.0  1700.0  2100.0  2600.0  2800.0  3100.0
+1400.0  1500.0  1900.0  2700.0  3100.0  3200.0
+2000.0  2500.0  2900.0  3100.0  3300.0  3400.0
+1200.0  1800.0  2400.0  2700.0  3100.0  3300.0
+1700.0  1900.0  2100.0  2500.0  2700.0  3100.0
+1500.0  2300.0  2500.0  2700.0  2900.0  3100.0
+1700.0  1800.0  2200.0  2600.0  2700.0  3000.0
+1800.0  1900.0  2300.0  2500.0  2700.0  3100.0
+1900.0  2000.0  2300.0  2600.0  3000.0  3300.0
+1400.0  1600.0  2200.0  2600.0  2800.0  3200.0
+1400.0  1700.0  2300.0  2600.0  3000.0  3100.0
+1500.0  1700.0  2100.0  2500.0  2800.0  3200.0
+2200.0  2600.0  2900.0  3100.0  3400.0  3500.0
+2200.0  2500.0  2900.0  3100.0  3300.0  3500.0
+1800.0  2100.0  2400.0  2900.0  3100.0  3300.0
+1600.0  1800.0  2300.0  2600.0  2900.0  3100.0
+1200.0  1400.0  2200.0  2400.0  3000.0  3200.0
+1300.0  1700.0  2100.0  2400.0  2900.0  3100.0
+1600.0  1700.0  2100.0  2200.0  3000.0  3200.0
+1500.0  1600.0  2500.0  2800.0  3100.0  3300.0
+1400.0  1600.0  2300.0  2700.0  3000.0  3300.0
+1400.0  1600.0  2200.0  2500.0  2900.0  3100.0
+1300.0  1600.0  2300.0  2600.0  3100.0  3300.0
+1600.0  1700.0  2200.0  2400.0  2900.0  3200.0
+1700.0  1800.0  2100.0  2300.0  3000.0  3300.0
+1300.0  1400.0  2300.0  2600.0  2900.0  3200.0
+1300.0  1500.0  2300.0  2500.0  2900.0  3200.0
+1800.0  1900.0  2200.0  2400.0  2700.0  3100.0
+1800.0  1900.0  2200.0  2400.0  2800.0  3100.0
+1600.0  1700.0  2200.0  2400.0  2700.0  3100.0
+1400.0  1600.0  2200.0  2500.0  3000.0  3300.0
+1500.0  1700.0  2200.0  2400.0  3000.0  3400.0
+1600.0  1700.0  2200.0  2500.0  2700.0  3200.0
+1700.0  1800.0  2100.0  2200.0  2800.0  3200.0
+1600.0  1700.0  2100.0  2200.0  3100.0  3300.0
+1500.0  1600.0  2100.0  2200.0  3100.0  3300.0
+1000.0  1800.0  2200.0  2500.0  3100.0  3300.0
+1100.0  1700.0  2200.0  2500.0  3000.0  3200.0
+1400.0  1800.0  2100.0  2400.0  2800.0  3000.0
+1500.0  1800.0  2500.0  2700.0  3000.0  3200.0
+1900.0  2500.0  2800.0  3000.0  3400.0  3500.0
+2000.0  2500.0  2900.0  3200.0  3400.0  3500.0
+1400.0  1700.0  2300.0  2500.0  3000.0  3300.0
+1400.0  1900.0  2300.0  2500.0  3000.0  3200.0
+1400.0  2000.0  2300.0  2600.0  2900.0  3100.0
+1400.0  1900.0  2200.0  2500.0  2700.0  3100.0
+1600.0  1800.0  2000.0  2400.0  3000.0  3200.0
+1300.0  1800.0  2400.0  2700.0  3100.0  3300.0
+1400.0  1600.0  2400.0  2600.0  3100.0  3200.0
+1400.0  1500.0  1600.0  2400.0  3200.0  3300.0
+1900.0  2300.0  2600.0  2900.0  3100.0  3200.0
+1100.0  1700.0  2500.0  2600.0  3100.0  3300.0
+1300.0  1700.0  2400.0  2500.0  3000.0  3300.0
+1400.0  1700.0  2400.0  2500.0  3000.0  3400.0
+1400.0  1600.0  2400.0  2500.0  2900.0  3400.0
+1400.0  1700.0  2400.0  2500.0  3100.0  3400.0
+1500.0  1600.0  2300.0  2600.0  3200.0  3300.0
+1500.0  1600.0  2300.0  2400.0  3000.0  3200.0
+1600.0  1800.0  2200.0  2300.0  3000.0  3100.0
+1500.0  1900.0  2400.0  2700.0  3000.0  3200.0
+1300.0  1800.0  2400.0  2700.0  3300.0  3400.0
+1400.0  1700.0  2200.0  2500.0  2900.0  3200.0
+1800.0  2100.0  2500.0  2700.0  3100.0  3400.0
+1000.0  1500.0  1800.0  2200.0  3000.0  3100.0
+2100.0  2600.0  2900.0  3100.0  3300.0  3400.0
+1900.0  2000.0  2200.0  2500.0  3100.0  3300.0
+1700.0  1900.0  2300.0  2600.0  2900.0  3300.0
+1600.0  1800.0  2000.0  2200.0  3100.0  3300.0
+1300.0  1700.0  2300.0  2600.0  3100.0  3200.0
+1400.0  2100.0  2400.0  2700.0  3100.0  3300.0
+1200.0  1500.0  2200.0  2600.0  3200.0  3300.0
+1500.0  1600.0  2300.0  2500.0  3000.0  3100.0
+1600.0  1900.0  2300.0  2500.0  3000.0  3100.0
+1500.0  1800.0  2600.0  2800.0  3200.0  3400.0
+1600.0  1700.0  2300.0  2500.0  3100.0  3400.0
+1500.0  1600.0  2300.0  2600.0  3100.0  3400.0
+1200.0  1500.0  2500.0  2600.0  3100.0  3400.0
+1200.0  1500.0  2500.0  2600.0  3100.0  3300.0
+1200.0  1600.0  2500.0  2600.0  3100.0  3300.0
+1900.0  2300.0  2600.0  2900.0  3400.0  3500.0
+900.0  1500.0  2600.0  2700.0  3100.0  3200.0
+2100.0  2500.0  2900.0  3100.0  3300.0  3400.0
+1400.0  2100.0  2300.0  2500.0  3000.0  3300.0
+1200.0  1600.0  1700.0  2300.0  3100.0  3200.0
+1100.0  1800.0  2200.0  2600.0  3000.0  3200.0
+1500.0  2000.0  2400.0  2700.0  3100.0  3200.0
+2000.0  2100.0  2400.0  2600.0  2900.0  3300.0
+1400.0  2100.0  2500.0  2700.0  3100.0  3200.0
+1200.0  1600.0  2300.0  2500.0  3000.0  3200.0
+1500.0  1600.0  2300.0  2500.0  3100.0  3200.0
+2300.0  2500.0  2700.0  2800.0  3100.0  3300.0
+2200.0  2300.0  2500.0  2700.0  3100.0  3200.0
+1300.0  1900.0  2300.0  2500.0  2800.0  3000.0
+1200.0  1800.0  2300.0  2500.0  3000.0  3300.0
+1400.0  1600.0  2400.0  2600.0  3200.0  3400.0
+1500.0  1600.0  2300.0  2500.0  3100.0  3400.0
+1400.0  1900.0  2400.0  2500.0  2700.0  3100.0
+1200.0  1600.0  2200.0  2600.0  3100.0  3300.0
+1300.0  1600.0  2300.0  2600.0  3100.0  3400.0
+1500.0  1600.0  2200.0  2500.0  3100.0  3400.0
+1600.0  2000.0  2500.0  2700.0  3000.0  3200.0
+1600.0  1700.0  2000.0  2300.0  3000.0  3200.0
+1400.0  1700.0  1800.0  2300.0  3100.0  3200.0
+2100.0  2200.0  2400.0  2600.0  3200.0  3300.0
+1600.0  1900.0  2400.0  2500.0  2700.0  3200.0
+2200.0  2300.0  2500.0  2700.0  3100.0  3300.0
+2200.0  2300.0  2600.0  2700.0  3100.0  3300.0
+1400.0  1800.0  2300.0  2500.0  2800.0  3200.0
+1600.0  1800.0  2300.0  2500.0  2700.0  3100.0
+1400.0  1600.0  1800.0  2500.0  2900.0  3000.0
+1400.0  1600.0  1900.0  2600.0  3000.0  3200.0
+1500.0  1700.0  2000.0  2600.0  3000.0  3200.0
+1400.0  1700.0  2400.0  2500.0  3100.0  3300.0
+2300.0  2400.0  2700.0  3000.0  3200.0  3400.0
+1300.0  1700.0  2100.0  2300.0  3100.0  3200.0
+1300.0  1700.0  2100.0  2300.0  3000.0  3100.0
+1300.0  1700.0  2000.0  2200.0  3000.0  3100.0
+1400.0  1700.0  1900.0  2300.0  3000.0  3100.0
+1400.0  1600.0  1800.0  2300.0  2900.0  3000.0
+1300.0  1800.0  2400.0  2600.0  3000.0  3300.0
+2200.0  2300.0  2500.0  2800.0  3000.0  3200.0
+1900.0  2200.0  2400.0  2600.0  2900.0  3300.0
+1900.0  2100.0  2400.0  2600.0  3200.0  3400.0
+1900.0  2400.0  2600.0  2800.0  3200.0  3400.0
+1800.0  2100.0  2500.0  2600.0  3200.0  3400.0
+1500.0  1900.0  2400.0  2600.0  2900.0  3100.0
+1200.0  1600.0  2300.0  2500.0  3200.0  3300.0
+1100.0  1400.0  2300.0  2400.0  3000.0  3300.0
+1000.0  1800.0  2400.0  2500.0  3300.0  3400.0
+1000.0  1700.0  2400.0  2500.0  3300.0  3400.0
+2000.0  2400.0  2800.0  3000.0  3300.0  3500.0
+1400.0  2100.0  2500.0  2700.0  3300.0  3400.0
+1200.0  1900.0  2500.0  2600.0  3200.0  3300.0
+1400.0  2000.0  2500.0  2600.0  3100.0  3300.0
+1800.0  2200.0  2700.0  3000.0  3300.0  3500.0
+1700.0  2200.0  2400.0  2700.0  3100.0  3300.0
+1000.0  2000.0  2300.0  2400.0  3300.0  3400.0
+1400.0  1900.0  2400.0  2600.0  3300.0  3400.0
+1300.0  1800.0  2400.0  2500.0  3100.0  3300.0
+1600.0  2000.0  2500.0  2600.0  3200.0  3300.0
+2100.0  2500.0  2700.0  3000.0  3200.0  3400.0
+1600.0  2000.0  2300.0  2400.0  3200.0  3300.0
+1400.0  1700.0  1900.0  2100.0  3300.0  3400.0
+1500.0  1700.0  2000.0  2200.0  3200.0  3300.0
+1500.0  1800.0  2200.0  2300.0  2600.0  2900.0
+1600.0  1700.0  2300.0  2500.0  2800.0  3000.0
+1600.0  1700.0  2200.0  2300.0  2900.0  3200.0
+1300.0  1500.0  2300.0  2400.0  2800.0  3200.0
+1400.0  1700.0  2300.0  2400.0  3000.0  3200.0
+1600.0  1700.0  2100.0  2300.0  2900.0  3300.0
+1500.0  2100.0  2300.0  2600.0  3100.0  3300.0
+1100.0  1500.0  2200.0  2300.0  3100.0  3300.0
+1000.0  1800.0  2300.0  2400.0  3100.0  3200.0
+900.0  1800.0  2400.0  2500.0  3100.0  3200.0
+1000.0  1800.0  2400.0  2500.0  3100.0  3200.0
+1700.0  2200.0  2500.0  2900.0  3400.0  3500.0
+1300.0  1900.0  2300.0  2400.0  3300.0  3400.0
+1100.0  1900.0  2300.0  2400.0  3200.0  3300.0
+1200.0  1700.0  2300.0  2400.0  3200.0  3400.0
+1300.0  1700.0  2300.0  2500.0  3200.0  3300.0
+1200.0  1500.0  2200.0  2300.0  3000.0  3200.0
+1200.0  1800.0  2200.0  2300.0  3000.0  3200.0
+1000.0  1800.0  2400.0  2500.0  3100.0  3300.0
+900.0  1800.0  2600.0  2700.0  3300.0  3400.0
+900.0  1900.0  2700.0  2800.0  3300.0  3400.0
+1800.0  2400.0  2700.0  3100.0  3400.0  3500.0
+1400.0  1600.0  2200.0  2400.0  2900.0  3200.0
+1700.0  2300.0  2500.0  2700.0  3300.0  3400.0
+1400.0  1900.0  2400.0  2600.0  3200.0  3400.0
+1300.0  1500.0  2200.0  2400.0  2700.0  3100.0
+1500.0  1600.0  2000.0  2200.0  2900.0  3100.0
+1500.0  1600.0  1800.0  1900.0  2800.0  3300.0
+1700.0  1800.0  2000.0  2300.0  3000.0  3300.0
+2200.0  2400.0  2600.0  2700.0  3300.0  3400.0
+1700.0  1900.0  2300.0  2400.0  3200.0  3300.0
+1300.0  1900.0  2200.0  2400.0  2700.0  3100.0
+1700.0  2300.0  2600.0  3000.0  3300.0  3400.0
+2200.0  2300.0  2500.0  2700.0  3100.0  3400.0
+1600.0  1800.0  2000.0  2200.0  3200.0  3300.0
+2100.0  2500.0  2700.0  2900.0  3400.0  3500.0
+2100.0  2400.0  2600.0  2700.0  3100.0  3300.0
+2100.0  2400.0  2700.0  3100.0  3300.0  3400.0
+1400.0  1700.0  2200.0  2600.0  2900.0  3200.0
+1000.0  1900.0  2200.0  2400.0  3100.0  3200.0
+1100.0  1600.0  2500.0  2600.0  3100.0  3300.0
+1300.0  1600.0  2200.0  2300.0  2800.0  3300.0
+1000.0  2000.0  2500.0  2600.0  3300.0  3400.0
+1700.0  2200.0  2400.0  2700.0  3200.0  3400.0
+1200.0  2000.0  2400.0  2500.0  3100.0  3200.0
+1100.0  1700.0  2100.0  2200.0  3000.0  3200.0
+1100.0  1600.0  2100.0  2200.0  3100.0  3300.0
+1100.0  1600.0  2200.0  2300.0  3200.0  3300.0
+1300.0  1700.0  2300.0  2400.0  3300.0  3400.0
+1300.0  1800.0  2300.0  2400.0  3300.0  3400.0
+1000.0  1800.0  2300.0  2400.0  3100.0  3300.0
+1400.0  2000.0  2300.0  2500.0  2900.0  3200.0
+1100.0  1900.0  2400.0  2500.0  3100.0  3200.0
+1000.0  2000.0  2600.0  2700.0  3300.0  3400.0
+1200.0  1600.0  2200.0  2300.0  3100.0  3300.0
+1300.0  1800.0  2200.0  2300.0  3200.0  3300.0
+1000.0  1700.0  2400.0  2600.0  3300.0  3400.0
+1000.0  1700.0  2400.0  2600.0  3200.0  3300.0
+2000.0  2400.0  2700.0  3100.0  3300.0  3400.0
+1500.0  1900.0  2200.0  2400.0  3200.0  3300.0
+1400.0  1700.0  2100.0  2200.0  3100.0  3300.0
+2200.0  2400.0  2600.0  2900.0  3300.0  3400.0
+1300.0  1900.0  2100.0  2500.0  3000.0  3200.0
+1900.0  2100.0  2300.0  2400.0  3000.0  3300.0
+1100.0  2200.0  2600.0  2700.0  3300.0  3400.0
+1700.0  1900.0  2400.0  2500.0  3000.0  3400.0
+1800.0  2100.0  2600.0  2900.0  3100.0  3400.0
+1900.0  2300.0  2900.0  3100.0  3300.0  3400.0
+1900.0  2400.0  2600.0  3000.0  3300.0  3500.0
+1400.0  2100.0  2400.0  2500.0  2700.0  3000.0
+1300.0  1600.0  1900.0  2100.0  2900.0  3000.0
+1900.0  2000.0  2200.0  2300.0  3000.0  3300.0
+1300.0  1600.0  2200.0  2500.0  3000.0  3300.0
+1100.0  1800.0  2300.0  2500.0  3100.0  3300.0
+1100.0  1700.0  2300.0  2500.0  3000.0  3200.0
+1200.0  1600.0  2300.0  2400.0  3000.0  3200.0
+1300.0  1600.0  2200.0  2400.0  2900.0  3200.0
+1800.0  2300.0  2600.0  3000.0  3300.0  3500.0
+1500.0  2000.0  2400.0  2700.0  3200.0  3400.0
+1800.0  2000.0  2200.0  2500.0  2800.0  3000.0
+1800.0  2100.0  2300.0  2400.0  2700.0  3000.0
+1800.0  2100.0  2300.0  2500.0  2900.0  3200.0
+1700.0  1900.0  2100.0  2700.0  2900.0  3200.0
+1800.0  2100.0  2300.0  2600.0  2900.0  3000.0
+1600.0  1800.0  2100.0  2400.0  2600.0  2900.0
+1800.0  1900.0  2400.0  2800.0  3000.0  3100.0
+2000.0  2400.0  2700.0  2900.0  3200.0  3400.0
+1900.0  2100.0  2800.0  2900.0  3200.0  3400.0
+2000.0  2100.0  2500.0  2800.0  2900.0  3100.0
+1800.0  1900.0  2500.0  2600.0  2900.0  3300.0
+1600.0  1700.0  2000.0  2100.0  3000.0  3200.0
+1600.0  1700.0  2000.0  2100.0  2900.0  3200.0
+2000.0  2200.0  2400.0  2800.0  3100.0  3300.0
+2100.0  2300.0  2800.0  2900.0  3300.0  3400.0
+1900.0  2000.0  2300.0  2400.0  2900.0  3100.0
+1500.0  1800.0  2300.0  2500.0  3000.0  3300.0
+1200.0  1800.0  2500.0  2600.0  2900.0  3000.0
+1400.0  1700.0  2200.0  2600.0  2900.0  3000.0
+1500.0  1700.0  2200.0  2600.0  3000.0  3100.0
+1700.0  1800.0  2100.0  2400.0  2900.0  3200.0
+1800.0  1900.0  2200.0  2600.0  2900.0  3200.0
+1800.0  2000.0  2200.0  2400.0  2800.0  3100.0
+1400.0  1600.0  1900.0  2100.0  2700.0  3200.0
+1500.0  2000.0  2200.0  2500.0  3000.0  3200.0
+1700.0  1800.0  2000.0  2200.0  3100.0  3300.0
+1800.0  1900.0  2100.0  2400.0  3000.0  3100.0
+1800.0  2100.0  2400.0  2600.0  3000.0  3100.0
+2000.0  2300.0  2600.0  2800.0  3000.0  3300.0
+2100.0  2300.0  2800.0  2900.0  3200.0  3400.0
+1800.0  1900.0  2500.0  2800.0  3100.0  3200.0
+1800.0  2000.0  2200.0  2500.0  2900.0  3000.0
+1700.0  1800.0  2100.0  2700.0  2900.0  3000.0
+1700.0  1800.0  2600.0  2800.0  3100.0  3300.0
+1600.0  2000.0  2300.0  2800.0  3100.0  3300.0
+1500.0  1600.0  1900.0  2000.0  2900.0  3200.0
+2100.0  2300.0  2700.0  2800.0  3000.0  3200.0
+2000.0  2200.0  2400.0  2600.0  3100.0  3200.0
+1800.0  2100.0  2400.0  2500.0  3000.0  3200.0
+1800.0  2100.0  2500.0  2600.0  2900.0  3200.0
+2100.0  2400.0  2800.0  2900.0  3300.0  3400.0
+1800.0  2000.0  2300.0  2600.0  3100.0  3400.0
+1700.0  2000.0  2300.0  2600.0  2900.0  3300.0
+1800.0  1900.0  2300.0  2500.0  2800.0  3000.0
+1400.0  1600.0  2200.0  2500.0  2900.0  3300.0
+1600.0  1700.0  2100.0  2300.0  2600.0  3100.0
+1700.0  1800.0  2100.0  2500.0  2800.0  3200.0
+1500.0  1600.0  2200.0  2700.0  2800.0  3200.0
+2100.0  2300.0  2700.0  2800.0  3100.0  3300.0
+1600.0  1700.0  2000.0  2400.0  3000.0  3300.0
+1500.0  1600.0  2600.0  2800.0  3100.0  3300.0
+1800.0  2000.0  2400.0  2600.0  2900.0  3100.0
+1700.0  1800.0  2300.0  2500.0  2600.0  3100.0
+1500.0  1800.0  2100.0  2500.0  2900.0  3300.0
+1600.0  1800.0  2100.0  2500.0  3000.0  3300.0
+1700.0  1800.0  2300.0  2400.0  2800.0  3100.0
+1600.0  1700.0  2000.0  2300.0  2800.0  3100.0
+1700.0  1800.0  2200.0  2400.0  2700.0  3100.0
+2000.0  2500.0  2800.0  3000.0  3400.0  3500.0
+1900.0  2400.0  2800.0  2900.0  3400.0  3500.0
+1600.0  1700.0  2400.0  2700.0  2900.0  3100.0
+1600.0  1700.0  2500.0  2600.0  2900.0  3100.0
+1500.0  1700.0  2200.0  2600.0  2900.0  3100.0
+1700.0  2000.0  2200.0  2500.0  2900.0  3200.0
+1500.0  1700.0  2200.0  2700.0  3200.0  3300.0
+1400.0  1500.0  2100.0  2500.0  3000.0  3200.0
+1200.0  1500.0  2200.0  2400.0  2800.0  3200.0
+1500.0  1600.0  2000.0  2100.0  2900.0  3200.0
+1800.0  1900.0  2100.0  2500.0  2900.0  3200.0
+1500.0  1800.0  2300.0  2500.0  2800.0  3200.0
+1500.0  1800.0  2500.0  2800.0  3100.0  3300.0
+1300.0  1800.0  2500.0  2600.0  3000.0  3100.0
+1600.0  1800.0  2300.0  2700.0  2900.0  3000.0
+1500.0  1600.0  2200.0  2400.0  2600.0  3100.0
+1600.0  2000.0  2500.0  2600.0  3000.0  3300.0
+1500.0  1600.0  2000.0  2600.0  2800.0  3000.0
+1500.0  1600.0  2200.0  2600.0  2700.0  3000.0
+1200.0  1600.0  2200.0  2400.0  3000.0  3200.0
+1800.0  2300.0  2500.0  2800.0  3000.0  3100.0
+1500.0  1600.0  2500.0  2800.0  2900.0  3200.0
+1300.0  1500.0  2300.0  2800.0  3100.0  3200.0
+1700.0  1800.0  2100.0  2500.0  2800.0  3000.0
+1400.0  1800.0  2200.0  2600.0  3000.0  3200.0
+1500.0  1700.0  2000.0  2700.0  3100.0  3200.0
+1400.0  1600.0  2300.0  2600.0  3000.0  3300.0
+1700.0  2100.0  2700.0  2900.0  3300.0  3500.0
+1700.0  1800.0  2300.0  2700.0  2800.0  3100.0
+1600.0  1800.0  2200.0  2600.0  2700.0  3000.0
+1900.0  2300.0  2400.0  2600.0  2800.0  3100.0
+1300.0  1600.0  2100.0  2200.0  3100.0  3300.0
+1500.0  1800.0  2400.0  2700.0  3000.0  3100.0
+1600.0  1800.0  2000.0  2600.0  2900.0  3000.0
+1600.0  1800.0  2100.0  2700.0  2900.0  3000.0
+1600.0  1700.0  2300.0  2700.0  3000.0  3100.0
+1700.0  1800.0  2400.0  2700.0  2900.0  3100.0
+1800.0  1900.0  2500.0  2600.0  3000.0  3100.0
+1700.0  1800.0  2100.0  2400.0  2700.0  3200.0
+1700.0  2000.0  2200.0  2500.0  2800.0  3000.0
+2000.0  2400.0  2500.0  2700.0  3000.0  3100.0
+1800.0  2000.0  2600.0  2700.0  3100.0  3200.0
+2200.0  2400.0  2700.0  2900.0  3100.0  3300.0
+2300.0  2500.0  2700.0  2900.0  3100.0  3300.0
+1800.0  2200.0  2300.0  2600.0  3000.0  3100.0
+1700.0  2100.0  2300.0  2800.0  3100.0  3200.0
+2000.0  2400.0  2600.0  2800.0  3000.0  3200.0
+1500.0  2000.0  2200.0  2600.0  3100.0  3300.0
+1100.0  1600.0  2200.0  2600.0  3000.0  3200.0
+1800.0  1900.0  2300.0  2500.0  2700.0  3000.0
+1900.0  2300.0  2400.0  2600.0  2800.0  3000.0
+1700.0  2100.0  2300.0  2600.0  2900.0  3000.0
+1600.0  1700.0  2000.0  2200.0  2600.0  3100.0
+1600.0  1900.0  2200.0  2400.0  3000.0  3100.0
+1300.0  2000.0  2300.0  2600.0  3100.0  3300.0
+1600.0  2100.0  2300.0  2600.0  2900.0  3000.0
+1700.0  2100.0  2300.0  2500.0  2800.0  3000.0
+1600.0  2100.0  2300.0  2500.0  2800.0  3000.0
+1500.0  1800.0  2000.0  2300.0  2800.0  2900.0
+1300.0  1600.0  2300.0  2600.0  2900.0  3200.0
+1200.0  1700.0  2100.0  2600.0  3100.0  3300.0
+1800.0  2200.0  2600.0  2700.0  3200.0  3300.0
+1600.0  1700.0  1900.0  2100.0  3100.0  3200.0
+1500.0  2000.0  2300.0  2500.0  3000.0  3300.0
+1600.0  1700.0  2000.0  2500.0  2700.0  2900.0
+1600.0  1800.0  2100.0  2500.0  2900.0  3000.0
+1600.0  1700.0  2100.0  2500.0  2700.0  2900.0
+1600.0  1700.0  2200.0  2500.0  2700.0  2900.0
+1500.0  1700.0  2000.0  2600.0  2800.0  3000.0
+1200.0  1600.0  2200.0  2400.0  2800.0  3000.0
+1800.0  2200.0  2400.0  2600.0  2800.0  3000.0
+1700.0  2000.0  2200.0  2500.0  2700.0  3100.0
+1700.0  2000.0  2200.0  2500.0  2700.0  3000.0
+1600.0  1900.0  2300.0  2600.0  2800.0  3200.0
+1200.0  1400.0  2000.0  2600.0  2800.0  3000.0
+1400.0  1600.0  2200.0  2600.0  3000.0  3300.0
+1500.0  1700.0  2200.0  2400.0  2700.0  2900.0
+1600.0  1700.0  2200.0  2500.0  2800.0  3000.0
+1600.0  1700.0  2100.0  2400.0  2700.0  3000.0
+1900.0  2100.0  2400.0  2600.0  3000.0  3100.0
+1900.0  2500.0  2700.0  2800.0  3100.0  3200.0
+1800.0  2200.0  2500.0  2600.0  3000.0  3200.0
+1900.0  2200.0  2400.0  2500.0  2800.0  3100.0
+1800.0  2100.0  2300.0  2500.0  2700.0  3000.0
+2000.0  2300.0  2400.0  2600.0  2900.0  3100.0
+1400.0  1600.0  1800.0  1900.0  2700.0  3200.0
+1400.0  1600.0  1700.0  1900.0  2800.0  3100.0
+2100.0  2200.0  2600.0  3000.0  3200.0  3300.0
+1700.0  2000.0  2200.0  2400.0  2700.0  2900.0
+1500.0  1600.0  1900.0  2400.0  2600.0  2700.0
+1600.0  1700.0  2000.0  2400.0  2600.0  2800.0
+1900.0  2000.0  2500.0  2800.0  2900.0  3200.0
+1500.0  1600.0  1900.0  2100.0  2700.0  3200.0
+1500.0  1700.0  2000.0  2200.0  2900.0  3300.0
+1800.0  2000.0  2700.0  2800.0  3200.0  3300.0
+1700.0  1800.0  2400.0  2700.0  3300.0  3400.0
+1600.0  1900.0  2500.0  2700.0  3300.0  3400.0
+1200.0  1800.0  2100.0  2400.0  3100.0  3200.0
+1200.0  1800.0  2100.0  2500.0  3200.0  3300.0
+1600.0  1700.0  2200.0  2600.0  2900.0  3200.0
+1800.0  2200.0  2500.0  2600.0  3200.0  3400.0
+1000.0  1900.0  2600.0  2700.0  3200.0  3300.0
+1100.0  2000.0  2600.0  2700.0  3200.0  3300.0
+1300.0  1800.0  2500.0  2700.0  3200.0  3300.0
+1400.0  1700.0  1800.0  2400.0  3000.0  3100.0
+1500.0  1800.0  2000.0  2400.0  3100.0  3200.0
+1200.0  1400.0  1500.0  2300.0  3100.0  3200.0
+2100.0  2200.0  2500.0  2600.0  3100.0  3200.0
+1400.0  1600.0  2100.0  2400.0  2900.0  3100.0
+1400.0  1500.0  2100.0  2400.0  2800.0  3200.0
+1100.0  2000.0  2300.0  2500.0  3200.0  3300.0
+1200.0  2000.0  2300.0  2700.0  3100.0  3200.0
+1300.0  1700.0  2200.0  2500.0  2900.0  3000.0
+1400.0  1700.0  1900.0  2600.0  2900.0  3100.0
+1200.0  2000.0  2300.0  2700.0  3200.0  3300.0
+1500.0  2200.0  2400.0  2600.0  3200.0  3300.0
+1400.0  1800.0  2000.0  2500.0  3000.0  3100.0
+1400.0  2000.0  2300.0  2500.0  3200.0  3300.0
+1900.0  2400.0  2600.0  2700.0  3100.0  3300.0
+1300.0  1600.0  1700.0  2200.0  3000.0  3100.0
+1300.0  1600.0  2500.0  2600.0  3100.0  3300.0
+1500.0  1700.0  2500.0  2600.0  3200.0  3300.0
+1300.0  1600.0  2400.0  2600.0  3200.0  3400.0
+1400.0  2000.0  2300.0  2500.0  2700.0  3000.0
+1500.0  1900.0  2300.0  2500.0  2700.0  3100.0
+1500.0  1600.0  1800.0  2500.0  2800.0  3000.0
+1300.0  1800.0  2200.0  2600.0  3100.0  3200.0
+1300.0  1900.0  2100.0  2500.0  3100.0  3200.0
+1300.0  1700.0  2100.0  2400.0  3100.0  3300.0
+1300.0  1900.0  2300.0  2600.0  3000.0  3200.0
+1200.0  1900.0  2500.0  2600.0  3300.0  3400.0
+1700.0  2200.0  2500.0  2600.0  3200.0  3400.0
+1600.0  2000.0  2200.0  2300.0  3100.0  3200.0
+1800.0  1900.0  2300.0  2600.0  3200.0  3300.0
+1800.0  1900.0  2100.0  2500.0  3200.0  3300.0
+1900.0  2000.0  2100.0  2500.0  3300.0  3400.0
+1700.0  2100.0  2600.0  2800.0  3300.0  3500.0
+1600.0  1800.0  2200.0  2700.0  3200.0  3300.0
+1400.0  2000.0  2300.0  2400.0  2600.0  3000.0
+1400.0  1600.0  2100.0  2300.0  3100.0  3200.0
+1100.0  1900.0  2500.0  2600.0  3300.0  3400.0
+1200.0  1600.0  2300.0  2600.0  3100.0  3400.0
+1400.0  1600.0  2100.0  2400.0  3000.0  3300.0
+1400.0  1700.0  2100.0  2500.0  3100.0  3300.0
+1200.0  2000.0  2700.0  2800.0  3300.0  3400.0
+1700.0  1800.0  2000.0  2300.0  3300.0  3400.0
+1300.0  1600.0  1800.0  2100.0  3100.0  3200.0
+1800.0  1900.0  2100.0  2200.0  3200.0  3400.0
+1800.0  1900.0  2100.0  2300.0  3300.0  3400.0
+1800.0  1900.0  2200.0  2300.0  3100.0  3300.0
+1800.0  2300.0  2800.0  2900.0  3200.0  3300.0
+1900.0  2200.0  2500.0  2600.0  3200.0  3300.0
+1300.0  1600.0  2300.0  2500.0  2900.0  3300.0
+1400.0  1600.0  2300.0  2500.0  2900.0  3300.0
+1400.0  1700.0  2400.0  2500.0  2900.0  3200.0
+1500.0  1700.0  2100.0  2200.0  3100.0  3200.0
+1500.0  1700.0  2100.0  2200.0  3100.0  3300.0
+1500.0  1600.0  2100.0  2300.0  2900.0  3300.0
+1300.0  1900.0  2200.0  2500.0  3000.0  3200.0
+1200.0  1900.0  2200.0  2500.0  3000.0  3200.0
+1000.0  1300.0  2100.0  2200.0  2900.0  3200.0
+1400.0  1600.0  1700.0  2000.0  3300.0  3400.0
+1300.0  1500.0  1600.0  2000.0  3300.0  3400.0
+1300.0  1500.0  1700.0  1900.0  3300.0  3400.0
+1500.0  1600.0  2100.0  2300.0  3100.0  3400.0
+1500.0  1600.0  2300.0  2500.0  2700.0  3200.0
+1400.0  2000.0  2300.0  2400.0  2700.0  3200.0
+1200.0  1500.0  2400.0  2600.0  2900.0  3200.0
+1500.0  1600.0  2300.0  2400.0  2700.0  3300.0
+1500.0  1700.0  2200.0  2400.0  2600.0  3100.0
+1500.0  1700.0  2300.0  2500.0  3100.0  3400.0
+1600.0  1700.0  2400.0  2600.0  3000.0  3400.0
+1600.0  1700.0  2500.0  2700.0  3100.0  3400.0
+1400.0  1500.0  2300.0  2400.0  3000.0  3300.0
+1500.0  1600.0  2100.0  2300.0  3000.0  3200.0
+1500.0  1600.0  2200.0  2400.0  2900.0  3200.0
+1500.0  1700.0  2400.0  2500.0  2900.0  3200.0
+1400.0  1900.0  2200.0  2300.0  2800.0  3200.0
+1500.0  1800.0  2100.0  2200.0  3000.0  3300.0
+2000.0  2100.0  2500.0  2600.0  3000.0  3400.0
+1000.0  1600.0  2200.0  2300.0  3200.0  3400.0
+1300.0  1500.0  2300.0  2600.0  2900.0  3300.0
+1400.0  1600.0  2500.0  2600.0  2900.0  3200.0
+1400.0  1600.0  2100.0  2400.0  3100.0  3300.0
+1500.0  2000.0  2300.0  2500.0  3100.0  3300.0
+1000.0  1700.0  2100.0  2200.0  3200.0  3300.0
+1500.0  1700.0  2200.0  2400.0  3200.0  3400.0
+1600.0  1800.0  2300.0  2400.0  3000.0  3100.0
+1300.0  1500.0  2100.0  2200.0  3000.0  3300.0
+1200.0  1400.0  2200.0  2300.0  3000.0  3300.0
+1600.0  1700.0  1900.0  2200.0  3200.0  3300.0
+1700.0  1800.0  2200.0  2300.0  3000.0  3400.0
+1400.0  1500.0  2200.0  2500.0  2800.0  3100.0
+1800.0  1900.0  2300.0  2500.0  3000.0  3400.0
+1500.0  1700.0  2100.0  2500.0  2700.0  3100.0
+1600.0  1900.0  2400.0  2700.0  2900.0  3100.0
+1700.0  1800.0  2200.0  2500.0  2700.0  3300.0
+1800.0  1900.0  2400.0  2500.0  2800.0  3300.0
+1300.0  1600.0  2100.0  2300.0  3000.0  3300.0
+1300.0  2100.0  2300.0  2600.0  3200.0  3300.0
+1100.0  1500.0  2500.0  2600.0  3100.0  3400.0
+1600.0  1700.0  2200.0  2500.0  2600.0  3100.0
+1500.0  1600.0  2200.0  2500.0  2600.0  3100.0
+1600.0  2200.0  2600.0  2800.0  3100.0  3300.0
+2000.0  2200.0  2600.0  2700.0  3300.0  3400.0
+1500.0  2000.0  2200.0  2400.0  2600.0  2900.0
+1500.0  1800.0  2200.0  2400.0  3100.0  3400.0
+1800.0  2200.0  2600.0  2800.0  3400.0  3500.0
+1600.0  1700.0  2200.0  2600.0  3200.0  3400.0
+1800.0  2000.0  2300.0  2600.0  3200.0  3400.0
+1600.0  1800.0  2200.0  2600.0  3200.0  3400.0
+1500.0  1600.0  2100.0  2400.0  2800.0  3200.0
+1500.0  1800.0  2000.0  2600.0  3200.0  3300.0
+1200.0  1800.0  1900.0  2200.0  3100.0  3200.0
+1500.0  1600.0  2200.0  2400.0  3200.0  3300.0
+1800.0  1900.0  2600.0  2800.0  3000.0  3300.0
+1300.0  1600.0  2300.0  2400.0  3000.0  3100.0
+2000.0  2100.0  2400.0  2600.0  3000.0  3100.0
+2000.0  2100.0  2500.0  2600.0  2900.0  3100.0
+1800.0  2000.0  2500.0  2600.0  3000.0  3100.0
+1800.0  2300.0  2700.0  2800.0  3400.0  3500.0
+1200.0  1900.0  2200.0  2600.0  3100.0  3200.0
+1600.0  2000.0  2500.0  2700.0  3100.0  3400.0
+1900.0  2100.0  2600.0  2700.0  3000.0  3200.0
+1500.0  1900.0  2600.0  2800.0  3200.0  3300.0
+1600.0  1800.0  2200.0  2700.0  3200.0  3400.0
+1400.0  1800.0  2400.0  2600.0  2900.0  3200.0
+1500.0  1700.0  2500.0  2600.0  3000.0  3200.0
+1800.0  2100.0  2600.0  2800.0  3400.0  3500.0
+1700.0  2000.0  2600.0  2800.0  3000.0  3300.0
+1800.0  2100.0  2700.0  2900.0  3400.0  3500.0
+1600.0  1700.0  2600.0  2700.0  3100.0  3400.0
+1800.0  1900.0  2400.0  2600.0  2800.0  3000.0
+1600.0  2000.0  2500.0  2600.0  2900.0  3200.0
+1400.0  1800.0  2400.0  2500.0  2900.0  3100.0
+1500.0  1800.0  2400.0  2500.0  2900.0  3200.0
+1200.0  1400.0  2300.0  2500.0  2900.0  3200.0
+1400.0  1600.0  2500.0  2700.0  3000.0  3300.0
+1500.0  1900.0  2500.0  2700.0  3000.0  3300.0
+1000.0  1400.0  2600.0  2700.0  3100.0  3300.0
+1400.0  1700.0  2100.0  2300.0  2900.0  3000.0
+1700.0  1800.0  2400.0  2600.0  2800.0  3000.0
+1500.0  2000.0  2100.0  2500.0  3000.0  3100.0
+2000.0  2100.0  2300.0  2400.0  3100.0  3300.0
+2100.0  2200.0  2600.0  2800.0  3100.0  3200.0
+2100.0  2200.0  2600.0  2700.0  3000.0  3200.0
+1800.0  2000.0  2600.0  2800.0  3100.0  3400.0
+1700.0  2000.0  2500.0  2900.0  3100.0  3300.0
+1700.0  2000.0  2500.0  2900.0  3100.0  3400.0
+1600.0  1800.0  2500.0  2800.0  3000.0  3200.0
+1500.0  1800.0  2200.0  2700.0  3200.0  3300.0
+1500.0  1700.0  2300.0  2600.0  3200.0  3300.0
+1500.0  1600.0  2400.0  2600.0  2800.0  3100.0
+1200.0  1600.0  2200.0  2600.0  3000.0  3200.0
+1500.0  1600.0  2000.0  2300.0  2900.0  3200.0
+1900.0  2000.0  2400.0  2700.0  3200.0  3400.0
+1900.0  2000.0  2400.0  2700.0  2800.0  3200.0
+1500.0  1700.0  2300.0  2600.0  3200.0  3400.0
+1700.0  1800.0  2400.0  2500.0  2800.0  3100.0
+1500.0  1600.0  2200.0  2400.0  2900.0  3100.0
+1500.0  1600.0  2200.0  2500.0  3100.0  3300.0
+1600.0  2000.0  2200.0  2400.0  2700.0  3100.0
+1500.0  1700.0  2300.0  2600.0  2900.0  3300.0
+1700.0  1800.0  2100.0  2300.0  2900.0  3100.0
+1400.0  1500.0  2000.0  2500.0  2700.0  3000.0
+1800.0  1900.0  2300.0  2400.0  2800.0  3100.0
+1300.0  1800.0  2200.0  2500.0  2900.0  3100.0
+1300.0  1900.0  2300.0  2700.0  3200.0  3300.0
+1600.0  1700.0  2300.0  2500.0  2700.0  3100.0
+1600.0  1700.0  2200.0  2600.0  3100.0  3300.0
+1400.0  1500.0  2300.0  2500.0  2800.0  3000.0
+1300.0  1700.0  2100.0  2500.0  3000.0  3300.0
+1600.0  1800.0  2200.0  2400.0  2800.0  3200.0
+1400.0  1500.0  2200.0  2500.0  3200.0  3300.0
+1800.0  1900.0  2200.0  2500.0  3000.0  3100.0
+1300.0  1500.0  2200.0  2400.0  2900.0  3100.0
+1300.0  1500.0  2300.0  2500.0  3100.0  3300.0
+1100.0  1500.0  2400.0  2500.0  3000.0  3200.0
+1600.0  1700.0  2400.0  2600.0  2800.0  3100.0
+1500.0  1600.0  2400.0  2500.0  2800.0  3100.0
+1500.0  1600.0  2000.0  2500.0  2800.0  3100.0
+1200.0  1700.0  2400.0  2600.0  3200.0  3300.0
+1100.0  1600.0  2400.0  2500.0  3200.0  3400.0
+1100.0  1500.0  2400.0  2500.0  3000.0  3400.0
+1100.0  1600.0  2400.0  2500.0  3100.0  3300.0
+1900.0  2000.0  2400.0  2500.0  2900.0  3100.0
+1300.0  1500.0  2200.0  2300.0  2700.0  3100.0
+1600.0  1900.0  2500.0  2800.0  3200.0  3300.0
+1900.0  2100.0  2600.0  2900.0  3300.0  3400.0
+1700.0  2100.0  2500.0  2600.0  3000.0  3300.0
+1800.0  1900.0  2400.0  2500.0  2900.0  3000.0
+1300.0  1500.0  2300.0  2400.0  2900.0  3000.0
+1200.0  1700.0  1800.0  2300.0  2900.0  3000.0
+1200.0  1600.0  1800.0  2200.0  2900.0  3000.0
+1200.0  1700.0  2100.0  2300.0  3100.0  3200.0
+1400.0  1900.0  2100.0  2400.0  3000.0  3200.0
+1100.0  1500.0  2500.0  2600.0  3000.0  3300.0
+1300.0  1400.0  2400.0  2500.0  2800.0  3300.0
+1300.0  1500.0  2300.0  2500.0  3200.0  3400.0
+1300.0  1900.0  2300.0  2700.0  3100.0  3200.0
+1700.0  1900.0  2200.0  2400.0  2700.0  3100.0
+1400.0  1500.0  2000.0  2500.0  2600.0  3000.0
+1500.0  1600.0  2000.0  2400.0  2600.0  3000.0
+1400.0  1700.0  2400.0  2600.0  3000.0  3300.0
+2000.0  2100.0  2300.0  2500.0  2900.0  3100.0
+1900.0  2000.0  2400.0  2500.0  2800.0  3000.0
+1800.0  1900.0  2200.0  2400.0  2700.0  3000.0
+1400.0  1600.0  1900.0  2300.0  2600.0  3000.0
+1600.0  2000.0  2600.0  2800.0  3300.0  3400.0
+1200.0  1600.0  1800.0  2100.0  3200.0  3300.0
+1900.0  2300.0  2700.0  2800.0  3400.0  3500.0
+1500.0  1600.0  2200.0  2500.0  2700.0  3100.0
+1700.0  2100.0  2300.0  2500.0  2900.0  3200.0
+1300.0  1500.0  2200.0  2500.0  3000.0  3300.0
+1400.0  1500.0  2100.0  2500.0  2600.0  2900.0
+1500.0  1600.0  2200.0  2300.0  2800.0  3300.0
+1500.0  1600.0  1800.0  2100.0  2800.0  2900.0
+1700.0  1800.0  2200.0  2400.0  2600.0  3100.0
+1600.0  1900.0  2600.0  2700.0  3200.0  3400.0
+1500.0  1700.0  2400.0  2600.0  3000.0  3400.0
+1200.0  1500.0  2300.0  2400.0  2900.0  3300.0
+1600.0  2100.0  2500.0  2700.0  3200.0  3400.0
+1500.0  1700.0  2300.0  2500.0  2600.0  2900.0
+1500.0  1600.0  2400.0  2600.0  3000.0  3100.0
+1600.0  1800.0  2600.0  2800.0  3000.0  3200.0
+1400.0  1700.0  2200.0  2500.0  3100.0  3400.0
+1600.0  1700.0  2300.0  2600.0  2700.0  3100.0
+1600.0  1700.0  2100.0  2500.0  2700.0  3100.0
+2000.0  2200.0  2500.0  2700.0  3100.0  3400.0
+1900.0  2100.0  2400.0  2600.0  3000.0  3400.0
+1400.0  1800.0  2100.0  2600.0  2900.0  3100.0
+1000.0  1800.0  2100.0  2300.0  3100.0  3200.0
+1400.0  1500.0  2200.0  2400.0  3000.0  3300.0
+1300.0  1800.0  2200.0  2300.0  3000.0  3200.0
+1100.0  1500.0  2300.0  2400.0  3000.0  3200.0
+1400.0  1500.0  2300.0  2400.0  2900.0  3300.0
+1400.0  1500.0  2200.0  2400.0  2800.0  3300.0
+1200.0  1600.0  2100.0  2200.0  3200.0  3300.0
+1600.0  1800.0  2100.0  2300.0  2500.0  3100.0
+1500.0  1600.0  2400.0  2600.0  3000.0  3400.0
+1500.0  1800.0  2500.0  2600.0  3300.0  3400.0
+1900.0  2500.0  2600.0  2900.0  3200.0  3300.0
+1300.0  1500.0  2100.0  2500.0  2700.0  3100.0
+1200.0  1400.0  2400.0  2500.0  2800.0  3200.0
+1600.0  1700.0  2300.0  2400.0  2900.0  3400.0
+1100.0  1800.0  2200.0  2300.0  3300.0  3400.0
+1800.0  2200.0  2500.0  2800.0  3100.0  3400.0
+1200.0  1700.0  2100.0  2700.0  3100.0  3200.0
+1300.0  1600.0  2100.0  2600.0  3000.0  3200.0
+2000.0  2200.0  2300.0  2400.0  3100.0  3300.0
+1700.0  1900.0  2400.0  2600.0  3100.0  3400.0
+1300.0  1700.0  2000.0  2600.0  3200.0  3300.0
+1100.0  1700.0  2300.0  2400.0  3200.0  3400.0
+1100.0  1600.0  2300.0  2400.0  3200.0  3400.0
+1700.0  2300.0  2800.0  3000.0  3300.0  3400.0
+1700.0  2000.0  2300.0  2800.0  3200.0  3300.0
+1800.0  1900.0  2100.0  2600.0  3000.0  3200.0
+1300.0  2000.0  2200.0  2600.0  3000.0  3200.0
+1300.0  1500.0  2300.0  2400.0  3000.0  3400.0
+1600.0  1700.0  2100.0  2300.0  2800.0  3200.0
+1700.0  1800.0  2400.0  2700.0  2800.0  3200.0
+1800.0  1900.0  2500.0  2700.0  2800.0  3200.0
+1700.0  1800.0  2100.0  2300.0  2900.0  3300.0
+1500.0  1700.0  2300.0  2400.0  2700.0  3200.0
+1600.0  2100.0  2500.0  2800.0  3100.0  3200.0
+1400.0  1700.0  2300.0  2700.0  3000.0  3300.0
+900.0  1400.0  2300.0  2500.0  3100.0  3300.0
+1700.0  1800.0  2300.0  2400.0  3000.0  3400.0
+2000.0  2100.0  2400.0  2600.0  2900.0  3100.0
+1900.0  2500.0  2600.0  2800.0  3300.0  3400.0
+1400.0  1500.0  2200.0  2300.0  2900.0  3300.0
+1600.0  1700.0  2000.0  2500.0  2600.0  3100.0
+1700.0  1800.0  2200.0  2300.0  2900.0  3200.0
+2100.0  2500.0  2800.0  3100.0  3300.0  3500.0
+1900.0  2400.0  2600.0  2700.0  3300.0  3400.0
+1700.0  2100.0  2500.0  2600.0  3300.0  3400.0
+1100.0  1500.0  2300.0  2400.0  3100.0  3400.0
+1200.0  1500.0  2300.0  2400.0  3300.0  3400.0
+1200.0  1800.0  2200.0  2400.0  3300.0  3400.0
+1500.0  1900.0  2200.0  2300.0  3100.0  3300.0
+1300.0  1600.0  1800.0  2100.0  3200.0  3300.0
+1600.0  1800.0  2400.0  2600.0  2900.0  3300.0
+1700.0  1900.0  2400.0  2600.0  3000.0  3400.0
+1300.0  1800.0  2200.0  2300.0  2900.0  3200.0
+1400.0  1700.0  2200.0  2300.0  3200.0  3400.0
+1400.0  1600.0  2200.0  2400.0  3200.0  3400.0
+1700.0  1800.0  2400.0  2500.0  3200.0  3500.0
+1600.0  1700.0  2500.0  2600.0  3200.0  3400.0
+1500.0  1700.0  2400.0  2500.0  2900.0  3400.0
+1700.0  1800.0  2300.0  2400.0  2900.0  3500.0
+1700.0  1800.0  2300.0  2400.0  3000.0  3500.0
+1600.0  1700.0  2300.0  2500.0  2700.0  3400.0
+1800.0  1900.0  2400.0  2500.0  3000.0  3500.0
+1300.0  1600.0  1800.0  2500.0  3100.0  3300.0
+1200.0  1700.0  2000.0  2200.0  3200.0  3300.0
+1200.0  1600.0  2200.0  2300.0  3200.0  3400.0
+1200.0  1600.0  2200.0  2400.0  3200.0  3400.0
+1600.0  2300.0  2600.0  2900.0  3300.0  3400.0
+1300.0  1600.0  2200.0  2300.0  3000.0  3400.0
+1900.0  2100.0  2400.0  2500.0  2800.0  3100.0
+1400.0  2000.0  2500.0  2700.0  3100.0  3200.0
+1700.0  1800.0  2400.0  2500.0  2800.0  3300.0
+1900.0  2000.0  2400.0  2600.0  2800.0  3400.0
+1600.0  2200.0  2500.0  2800.0  3200.0  3300.0
+1200.0  1700.0  2300.0  2400.0  3000.0  3300.0
+1200.0  1400.0  2200.0  2300.0  2900.0  3200.0
+1600.0  1800.0  2400.0  2700.0  3200.0  3400.0
+1600.0  1900.0  2400.0  2600.0  3100.0  3400.0
+1500.0  1800.0  2400.0  2600.0  3000.0  3400.0
+1600.0  1700.0  2400.0  2500.0  3100.0  3500.0
+1500.0  1600.0  2100.0  2300.0  2700.0  3200.0
+1500.0  1600.0  2100.0  2200.0  2600.0  3100.0
+1700.0  1900.0  2400.0  2700.0  3300.0  3400.0
+1200.0  1500.0  2200.0  2300.0  3300.0  3400.0
+1300.0  1600.0  2100.0  2200.0  3300.0  3400.0
+1400.0  1500.0  2100.0  2200.0  3200.0  3400.0
+1800.0  1900.0  2300.0  2400.0  2800.0  3300.0
+1900.0  2000.0  2400.0  2500.0  2800.0  3200.0
+2000.0  2100.0  2400.0  2600.0  2800.0  3200.0
+1500.0  2100.0  2300.0  2500.0  2800.0  3200.0
+1500.0  1800.0  2300.0  2400.0  3000.0  3200.0
+1700.0  1800.0  2600.0  2800.0  3000.0  3200.0
+1900.0  2500.0  2800.0  2900.0  3200.0  3300.0
+1100.0  1400.0  2500.0  2800.0  3000.0  3200.0
+1200.0  1400.0  2700.0  2900.0  3100.0  3300.0
+1200.0  1400.0  2600.0  2900.0  3000.0  3300.0
+1200.0  1400.0  2700.0  2900.0  3000.0  3400.0
+1200.0  1600.0  2600.0  2800.0  3100.0  3400.0
+1300.0  1800.0  2400.0  2500.0  2900.0  3200.0
+1400.0  1700.0  2500.0  2600.0  3200.0  3400.0
+1400.0  1900.0  2300.0  2400.0  2900.0  3300.0
+1800.0  1900.0  2600.0  2700.0  3100.0  3400.0
+1800.0  2000.0  2600.0  2700.0  3100.0  3400.0
+1800.0  1900.0  2600.0  2700.0  3000.0  3400.0
+1400.0  1800.0  2300.0  2500.0  2700.0  3000.0
+1600.0  1700.0  2500.0  2700.0  3200.0  3400.0
+1500.0  1700.0  2400.0  2700.0  3000.0  3200.0
+1500.0  1900.0  2400.0  2700.0  3100.0  3200.0
+1900.0  2100.0  2700.0  2800.0  3200.0  3300.0
+1600.0  2000.0  2300.0  2400.0  3200.0  3400.0
+1500.0  1700.0  2500.0  2700.0  3200.0  3300.0
+1700.0  1800.0  2500.0  2700.0  3200.0  3300.0
+1800.0  1900.0  2600.0  2800.0  3100.0  3400.0
+1700.0  1800.0  2500.0  2800.0  2900.0  3200.0
+1600.0  1700.0  2500.0  2700.0  3000.0  3300.0
+1200.0  1700.0  2700.0  2800.0  3100.0  3300.0
+1200.0  1500.0  2700.0  2900.0  3100.0  3300.0
+1500.0  1800.0  2400.0  2700.0  3100.0  3400.0
+1400.0  1600.0  2600.0  2800.0  3000.0  3300.0
+1600.0  1800.0  2500.0  2700.0  3000.0  3400.0
+1500.0  1800.0  2300.0  2600.0  3100.0  3400.0
+1500.0  1700.0  2300.0  2500.0  2700.0  3300.0
+2000.0  2100.0  2500.0  2700.0  2900.0  3300.0
+2200.0  2300.0  2600.0  2700.0  3200.0  3400.0
+1400.0  1800.0  2300.0  2700.0  3200.0  3300.0
+1500.0  1700.0  2600.0  2700.0  3100.0  3400.0
+1300.0  1700.0  2100.0  2500.0  3100.0  3300.0
+2100.0  2200.0  2600.0  2800.0  3300.0  3400.0
+2100.0  2300.0  2700.0  2800.0  3300.0  3400.0
+1600.0  1700.0  2500.0  2700.0  3100.0  3300.0
+1400.0  1700.0  2600.0  2700.0  3200.0  3400.0
+1200.0  1500.0  2600.0  2800.0  3100.0  3300.0
+1800.0  1900.0  2500.0  2600.0  3000.0  3400.0
+1700.0  1800.0  2400.0  2600.0  2900.0  3000.0
+1200.0  1600.0  2800.0  3000.0  3200.0  3300.0
+1600.0  1700.0  2300.0  2600.0  3200.0  3400.0
+1700.0  1800.0  2200.0  2500.0  2800.0  3300.0
+1700.0  1800.0  2600.0  2700.0  3000.0  3400.0
+1500.0  1600.0  2600.0  2800.0  3000.0  3300.0
+1100.0  1300.0  2400.0  2900.0  3000.0  3200.0
+1100.0  1500.0  2700.0  2800.0  3100.0  3300.0
+1600.0  1800.0  2000.0  2300.0  3300.0  3400.0
+1800.0  2000.0  2100.0  2400.0  3300.0  3400.0
+1800.0  2000.0  2500.0  2600.0  2900.0  3300.0
+1600.0  1700.0  2400.0  2700.0  2900.0  3300.0
+1600.0  1700.0  2600.0  2800.0  3100.0  3300.0
+1500.0  1700.0  1900.0  2100.0  3000.0  3300.0
+1900.0  2000.0  2100.0  2300.0  3200.0  3400.0
+2100.0  2200.0  2500.0  2600.0  2900.0  3300.0
+1800.0  2000.0  2200.0  2400.0  3300.0  3400.0
+1700.0  1800.0  2100.0  2300.0  3300.0  3400.0
+2000.0  2200.0  2500.0  2600.0  3200.0  3400.0
+1700.0  1900.0  2100.0  2800.0  3100.0  3200.0
+1800.0  1900.0  2500.0  2900.0  3100.0  3200.0
+1800.0  1900.0  2500.0  2900.0  3000.0  3200.0
+1300.0  1500.0  1800.0  1900.0  2700.0  3200.0
+1000.0  1300.0  2400.0  3000.0  3300.0  3400.0
+1400.0  1600.0  1800.0  1900.0  2900.0  3300.0
+1500.0  1700.0  1900.0  2000.0  2800.0  3200.0
+1800.0  2000.0  2300.0  2500.0  2700.0  3100.0
+1800.0  1900.0  2200.0  2300.0  2800.0  3200.0
+1200.0  1900.0  2500.0  2600.0  2900.0  3000.0
+1200.0  1900.0  2400.0  2600.0  2900.0  3000.0
+1800.0  2000.0  2100.0  2400.0  3000.0  3200.0
+1900.0  2200.0  2600.0  2900.0  3100.0  3200.0
+1600.0  1700.0  2000.0  2100.0  2700.0  3200.0
+1600.0  1800.0  2300.0  2800.0  3100.0  3200.0
+1700.0  1900.0  2400.0  2700.0  2900.0  3300.0
+1900.0  2000.0  2400.0  2800.0  3200.0  3300.0
+1400.0  1600.0  2300.0  2500.0  2800.0  3100.0
+1600.0  1700.0  2100.0  2200.0  2700.0  3200.0
+2000.0  2100.0  2600.0  2900.0  3300.0  3400.0
+1200.0  1500.0  2300.0  2500.0  2900.0  3200.0
+1200.0  1400.0  2200.0  2400.0  2900.0  3200.0
+1600.0  2200.0  2400.0  2600.0  3200.0  3400.0
+1700.0  1800.0  2400.0  2500.0  3000.0  3100.0
+1700.0  1800.0  2200.0  2600.0  3100.0  3200.0
+1200.0  1900.0  2300.0  2600.0  3100.0  3200.0
+1400.0  1600.0  2000.0  2800.0  3200.0  3300.0
+1500.0  1700.0  2400.0  2500.0  3000.0  3100.0
+1400.0  2000.0  2400.0  2600.0  3000.0  3300.0
+1200.0  1400.0  2400.0  2800.0  3000.0  3100.0
+1500.0  1600.0  2000.0  2100.0  2900.0  3300.0
+1500.0  1600.0  2000.0  2200.0  2800.0  3300.0
+1200.0  1500.0  2100.0  2200.0  3000.0  3300.0
+1400.0  2000.0  2300.0  2700.0  3100.0  3300.0
+1600.0  1700.0  2000.0  2700.0  3200.0  3300.0
+1700.0  1900.0  2300.0  2600.0  2800.0  3200.0
+2100.0  2300.0  2600.0  2800.0  3100.0  3200.0
+1400.0  1800.0  2400.0  2500.0  3000.0  3200.0
+1500.0  2100.0  2400.0  2700.0  3000.0  3300.0
+1600.0  1700.0  2100.0  2700.0  3000.0  3100.0
+1500.0  1800.0  2200.0  2700.0  3100.0  3300.0
+1300.0  1500.0  2400.0  2500.0  2900.0  3200.0
+1200.0  1500.0  2500.0  2600.0  3000.0  3200.0
+1100.0  1500.0  2400.0  2500.0  2900.0  3300.0
+1800.0  1900.0  2400.0  2500.0  2800.0  3000.0
+1700.0  1800.0  2100.0  2800.0  3100.0  3200.0
+1900.0  2200.0  2400.0  2900.0  3100.0  3200.0
+1500.0  1700.0  2300.0  2600.0  2800.0  3100.0
+1300.0  1500.0  1900.0  2500.0  3000.0  3100.0
+1700.0  1800.0  2400.0  2700.0  3100.0  3200.0
+1900.0  2500.0  2900.0  3100.0  3300.0  3400.0
+1500.0  1800.0  2000.0  2600.0  2900.0  3100.0
+1900.0  2300.0  2500.0  2800.0  3200.0  3400.0
+1500.0  2100.0  2500.0  2700.0  3200.0  3400.0
+1500.0  2100.0  2500.0  2700.0  2900.0  3200.0
+1800.0  2300.0  2800.0  2900.0  3300.0  3400.0
+1600.0  1900.0  2200.0  2600.0  3000.0  3300.0
+1400.0  1900.0  2400.0  2600.0  2800.0  3100.0
+1300.0  1700.0  2500.0  2600.0  3000.0  3200.0
+1400.0  1800.0  2100.0  2500.0  2800.0  3100.0
+1700.0  2400.0  2600.0  3000.0  3300.0  3400.0
+2200.0  2400.0  2700.0  3000.0  3200.0  3300.0
+1400.0  1800.0  2400.0  2700.0  3000.0  3200.0
+1300.0  1700.0  2300.0  2600.0  2900.0  3200.0
+1400.0  1900.0  2200.0  2500.0  2700.0  3000.0
+1500.0  1900.0  2200.0  2800.0  3100.0  3300.0
+1400.0  1600.0  1800.0  2200.0  3200.0  3400.0
+1700.0  2000.0  2200.0  2700.0  3200.0  3300.0
+1400.0  1900.0  2500.0  2700.0  3300.0  3400.0
+1500.0  2100.0  2300.0  2500.0  2800.0  3100.0
+1500.0  2000.0  2300.0  2500.0  2800.0  3100.0
+1500.0  1600.0  2400.0  2800.0  3000.0  3200.0
+1400.0  1600.0  2200.0  2700.0  3000.0  3100.0
+1200.0  1800.0  2000.0  2300.0  2900.0  3100.0
+1300.0  1900.0  2400.0  2700.0  3200.0  3300.0
+2200.0  2500.0  2800.0  3100.0  3400.0  3500.0
+2100.0  2400.0  2900.0  3000.0  3100.0  3300.0
+1200.0  1500.0  1700.0  2300.0  2900.0  3000.0
+1600.0  2200.0  2600.0  2800.0  3200.0  3300.0
+1700.0  2300.0  2500.0  2800.0  3100.0  3300.0
+1400.0  1900.0  2500.0  2600.0  3100.0  3200.0
+1400.0  1700.0  2500.0  2600.0  3100.0  3400.0
+1300.0  1700.0  2500.0  2600.0  3100.0  3400.0
+1400.0  2100.0  2300.0  2600.0  3200.0  3300.0
+1300.0  1900.0  2200.0  2600.0  3100.0  3200.0
+1100.0  1900.0  2100.0  2500.0  3100.0  3200.0
+1300.0  1400.0  2500.0  2600.0  3000.0  3300.0
+1300.0  2000.0  2400.0  2600.0  3100.0  3300.0
+1500.0  2000.0  2300.0  2600.0  3200.0  3400.0
+1400.0  1900.0  2200.0  2700.0  3000.0  3200.0
+1600.0  2100.0  2500.0  2600.0  3000.0  3200.0
+1600.0  2100.0  2500.0  2700.0  3000.0  3200.0
+1500.0  2000.0  2500.0  2700.0  3000.0  3200.0
+1900.0  2400.0  2600.0  2900.0  3400.0  3500.0
+1400.0  1700.0  2300.0  2700.0  3000.0  3200.0
+1800.0  2300.0  2900.0  3100.0  3400.0  3500.0
+1700.0  2100.0  2300.0  2500.0  3000.0  3100.0
+1900.0  2100.0  2500.0  3000.0  3300.0  3400.0
+1300.0  1500.0  1800.0  2500.0  2800.0  3000.0
+1300.0  1400.0  2000.0  2400.0  2800.0  3200.0
+1300.0  2100.0  2400.0  2600.0  3200.0  3300.0
+1300.0  1900.0  2200.0  2600.0  3000.0  3200.0
+1400.0  1900.0  2400.0  2600.0  3100.0  3200.0
+1300.0  1800.0  2500.0  2600.0  3100.0  3200.0
+1500.0  2100.0  2400.0  2500.0  3200.0  3300.0
+1500.0  1700.0  2000.0  2700.0  2900.0  3100.0
+1400.0  2000.0  2200.0  2400.0  2700.0  3100.0
+1200.0  1400.0  2600.0  2700.0  2900.0  3100.0
+1500.0  2100.0  2300.0  2500.0  2700.0  3100.0
+1800.0  2100.0  2500.0  2600.0  3100.0  3200.0
+1200.0  1700.0  2100.0  2500.0  3200.0  3300.0
+1400.0  2100.0  2300.0  2700.0  3200.0  3300.0
+1700.0  2000.0  2600.0  2800.0  3100.0  3200.0
+1400.0  1700.0  2300.0  2700.0  3200.0  3300.0
+1300.0  1600.0  2200.0  2400.0  3100.0  3200.0
+1400.0  1500.0  2200.0  2500.0  3000.0  3200.0
+1400.0  1700.0  2300.0  2500.0  2800.0  3100.0
+1500.0  1700.0  2200.0  2500.0  2700.0  3100.0
+1500.0  1700.0  2200.0  2500.0  2900.0  3100.0
+1800.0  2000.0  2700.0  2900.0  3100.0  3400.0
+1300.0  1700.0  2100.0  2200.0  3200.0  3300.0
+1500.0  1600.0  2300.0  2700.0  2900.0  3300.0
+1500.0  1600.0  2700.0  2800.0  3000.0  3300.0
+1400.0  1500.0  2500.0  2700.0  2900.0  3200.0
+1100.0  1600.0  2400.0  2600.0  3000.0  3200.0
+1600.0  2000.0  2700.0  2900.0  3300.0  3400.0
+1400.0  1500.0  2600.0  2800.0  3000.0  3300.0
+1400.0  1500.0  2600.0  2700.0  3000.0  3300.0
+1400.0  1500.0  2500.0  2700.0  2900.0  3300.0
+1700.0  1900.0  2600.0  2900.0  3100.0  3300.0
+1500.0  1600.0  2300.0  2700.0  3100.0  3200.0
+1200.0  1700.0  2300.0  2700.0  3000.0  3200.0
+1500.0  1600.0  2500.0  2800.0  3000.0  3300.0
+1500.0  1600.0  1700.0  1800.0  3100.0  3400.0
+1500.0  1600.0  2300.0  2700.0  3000.0  3300.0
+1300.0  1500.0  2600.0  2700.0  3200.0  3300.0
+2100.0  2200.0  2500.0  2700.0  3100.0  3200.0
+2100.0  2200.0  2800.0  3000.0  3200.0  3300.0
+1500.0  1700.0  2400.0  2600.0  2800.0  3100.0
+1500.0  1800.0  2400.0  2700.0  3000.0  3200.0
+1400.0  1700.0  2400.0  2700.0  3100.0  3200.0
+900.0  1500.0  2800.0  2900.0  3100.0  3300.0
+1400.0  1700.0  2500.0  2700.0  3100.0  3400.0
+1800.0  2000.0  2300.0  2800.0  3100.0  3300.0
+1200.0  1600.0  2300.0  2400.0  2900.0  3200.0
+1800.0  1900.0  2300.0  2600.0  3000.0  3100.0
+1300.0  1600.0  1900.0  2400.0  2900.0  3200.0
+1400.0  1600.0  2500.0  2700.0  2900.0  3300.0
+900.0  1600.0  2200.0  2300.0  3200.0  3300.0
+1300.0  1900.0  2200.0  2300.0  3100.0  3300.0
+1700.0  1900.0  2500.0  2900.0  3200.0  3300.0
+1400.0  1900.0  2500.0  2700.0  3200.0  3400.0
+1700.0  2000.0  2200.0  2500.0  2900.0  3000.0
+1200.0  1500.0  2600.0  2800.0  3100.0  3400.0
+1400.0  1700.0  2100.0  2600.0  3000.0  3300.0
+1400.0  1700.0  2500.0  2800.0  3200.0  3300.0
+1800.0  2400.0  2600.0  2900.0  3400.0  3500.0
+1900.0  2100.0  2500.0  2600.0  3100.0  3200.0
+2200.0  2500.0  2800.0  3000.0  3400.0  3500.0
+1600.0  1800.0  1900.0  2500.0  3100.0  3200.0
+1100.0  1600.0  2500.0  2600.0  3200.0  3400.0
+1700.0  2200.0  2500.0  2700.0  3100.0  3400.0
+1000.0  1700.0  2200.0  2300.0  3200.0  3300.0
+1100.0  1700.0  2200.0  2600.0  3100.0  3300.0
+1100.0  1700.0  2300.0  2700.0  3200.0  3300.0
+1500.0  1800.0  2100.0  2600.0  3200.0  3300.0
+1300.0  2100.0  2400.0  2600.0  2800.0  3200.0
+1800.0  1900.0  2200.0  2600.0  2800.0  3200.0
+1800.0  1900.0  2500.0  2600.0  3100.0  3200.0
+1400.0  2100.0  2300.0  2500.0  2700.0  3100.0
+1300.0  2000.0  2400.0  2500.0  2800.0  3200.0
+1600.0  2100.0  2600.0  2800.0  3200.0  3400.0
+1400.0  1800.0  2200.0  2400.0  3300.0  3400.0
+1300.0  1700.0  2200.0  2300.0  3300.0  3400.0
+1300.0  1600.0  2200.0  2300.0  3300.0  3400.0
+1300.0  1600.0  2300.0  2400.0  3300.0  3400.0
+1100.0  1700.0  2200.0  2300.0  3300.0  3400.0
+1500.0  1900.0  2200.0  2500.0  2700.0  3100.0
+1300.0  1700.0  1900.0  2200.0  3000.0  3100.0
+1400.0  1600.0  2500.0  2600.0  3300.0  3400.0
+1500.0  1600.0  2500.0  2600.0  3200.0  3400.0
+1000.0  1700.0  2600.0  2700.0  3300.0  3400.0
+1000.0  1600.0  2600.0  2700.0  3300.0  3400.0
+1400.0  1700.0  2500.0  2600.0  3000.0  3400.0
+1400.0  1800.0  2500.0  2600.0  3300.0  3400.0
+1500.0  1600.0  2400.0  2600.0  3200.0  3400.0
+1600.0  2200.0  2500.0  2600.0  3200.0  3300.0
+1000.0  1900.0  2400.0  2500.0  3300.0  3400.0
+1200.0  1700.0  2200.0  2400.0  3200.0  3400.0
+2000.0  2200.0  2600.0  2900.0  3300.0  3400.0
+2200.0  2300.0  2700.0  2800.0  3300.0  3400.0
+2200.0  2300.0  2700.0  2800.0  3200.0  3300.0
+2000.0  2300.0  2400.0  2700.0  3100.0  3300.0
+2200.0  2300.0  2600.0  2800.0  3200.0  3300.0
+1500.0  2000.0  2300.0  2400.0  3200.0  3300.0
+1500.0  1600.0  1800.0  2500.0  3200.0  3300.0
+1100.0  1900.0  2200.0  2400.0  3000.0  3300.0
+1500.0  2100.0  2600.0  2700.0  3200.0  3400.0
+1400.0  1900.0  2400.0  2600.0  3000.0  3200.0
+1200.0  1800.0  2400.0  2600.0  3200.0  3300.0
+1200.0  1700.0  2700.0  2800.0  3200.0  3300.0
+1200.0  1600.0  2600.0  2700.0  3200.0  3300.0
+1300.0  1600.0  2500.0  2600.0  3000.0  3300.0
+1500.0  1600.0  2500.0  2700.0  2900.0  3300.0
+1500.0  1700.0  1800.0  2500.0  3100.0  3200.0
+1400.0  1700.0  1900.0  2600.0  3100.0  3200.0
+1300.0  1700.0  2500.0  2600.0  3200.0  3300.0
+1100.0  1400.0  2600.0  3000.0  3200.0  3300.0
+1100.0  1400.0  2600.0  2900.0  3100.0  3300.0
+1600.0  1800.0  1900.0  2600.0  3200.0  3300.0
+2000.0  2100.0  2600.0  2700.0  3100.0  3200.0
+1300.0  1700.0  2100.0  2300.0  3200.0  3300.0
+1100.0  1700.0  2800.0  2900.0  3200.0  3300.0
+1500.0  1700.0  2500.0  2600.0  2900.0  3200.0
+1400.0  1800.0  2600.0  2700.0  3200.0  3300.0
+1600.0  1700.0  2100.0  2400.0  3000.0  3300.0
+1300.0  1500.0  1600.0  2200.0  3000.0  3100.0
+1300.0  2000.0  2500.0  2700.0  3100.0  3200.0
+1800.0  2200.0  2500.0  2600.0  3200.0  3300.0
+1700.0  2200.0  2400.0  2600.0  2800.0  3100.0
+2000.0  2200.0  2600.0  2800.0  3000.0  3300.0
+1300.0  1400.0  2400.0  2700.0  3100.0  3300.0
+1500.0  1600.0  1900.0  2000.0  2900.0  3300.0
+1000.0  1200.0  2400.0  2500.0  3100.0  3400.0
+1800.0  1900.0  2200.0  2400.0  2600.0  3000.0
+1900.0  2000.0  2200.0  2600.0  2800.0  3000.0
+1300.0  1800.0  2200.0  2400.0  2900.0  3200.0
+1800.0  2100.0  2300.0  2500.0  2800.0  3000.0
+1500.0  2000.0  2300.0  2600.0  2800.0  3100.0
+1000.0  1400.0  2400.0  2500.0  3100.0  3300.0
+1300.0  1900.0  2700.0  2800.0  3200.0  3300.0
+1900.0  2200.0  2300.0  2500.0  2800.0  3100.0
+1900.0  2000.0  2200.0  2600.0  2800.0  3100.0
+1600.0  1700.0  2100.0  2200.0  2900.0  3200.0
+1500.0  1900.0  2200.0  2500.0  3000.0  3300.0
+1400.0  1900.0  2400.0  2800.0  3100.0  3300.0
+1900.0  2000.0  2300.0  2600.0  2800.0  3200.0
+1900.0  2100.0  2300.0  2600.0  2800.0  3200.0
+1600.0  1700.0  2300.0  2700.0  3100.0  3300.0
+1600.0  1800.0  2100.0  2300.0  2600.0  3000.0
+1600.0  1800.0  2100.0  2400.0  2600.0  3000.0
+1700.0  2000.0  2200.0  2500.0  3100.0  3300.0
+1600.0  1700.0  2000.0  2400.0  2600.0  3000.0
+1300.0  1500.0  2200.0  2400.0  2800.0  3200.0
+1300.0  1700.0  2200.0  2400.0  2900.0  3200.0
+1700.0  1900.0  2100.0  2300.0  2800.0  3100.0
+1200.0  1400.0  2300.0  2400.0  2900.0  3300.0
+1400.0  1500.0  2000.0  2200.0  2700.0  3000.0
+1200.0  1900.0  2400.0  2600.0  3000.0  3300.0
+1700.0  1800.0  2100.0  2300.0  2600.0  3100.0
+1900.0  2000.0  2200.0  2400.0  2700.0  3000.0
+1900.0  2100.0  2300.0  2400.0  2700.0  3000.0
+1400.0  1800.0  2200.0  2400.0  2700.0  3200.0
+1700.0  1800.0  2200.0  2300.0  2900.0  3300.0
+1700.0  2000.0  2500.0  2800.0  3400.0  3500.0
+1300.0  1500.0  2200.0  2300.0  3100.0  3200.0
+1400.0  1800.0  2100.0  2600.0  3000.0  3200.0
+1300.0  1900.0  2200.0  2500.0  3100.0  3300.0
+1500.0  2100.0  2600.0  2700.0  3200.0  3300.0
+1300.0  1800.0  2600.0  2700.0  3200.0  3300.0
+1000.0  1500.0  2700.0  2800.0  3100.0  3300.0
+2200.0  2300.0  2500.0  2900.0  3200.0  3400.0
+2100.0  2200.0  2500.0  2900.0  3100.0  3300.0
+1500.0  1600.0  2400.0  2700.0  3000.0  3300.0
+1300.0  1500.0  1600.0  2000.0  3200.0  3400.0
+1400.0  1600.0  1700.0  2000.0  3200.0  3400.0
+1700.0  1900.0  2700.0  2800.0  3200.0  3300.0
+1700.0  1900.0  2700.0  2800.0  3100.0  3300.0
+1500.0  1600.0  2300.0  2700.0  2800.0  3200.0
+1500.0  1600.0  2200.0  2500.0  2900.0  3300.0
+1200.0  1500.0  2100.0  2600.0  3000.0  3300.0
+1800.0  2300.0  2700.0  2800.0  3200.0  3400.0
+1000.0  1400.0  2400.0  2500.0  2900.0  3300.0
+1000.0  1500.0  2500.0  2600.0  2900.0  3200.0
+1900.0  2400.0  2700.0  3000.0  3200.0  3400.0
+1700.0  1900.0  2300.0  2400.0  3000.0  3400.0
+1300.0  1600.0  1700.0  2200.0  3100.0  3300.0
+1800.0  1900.0  2600.0  2900.0  3100.0  3300.0
+2300.0  2600.0  2800.0  2900.0  3300.0  3400.0
+1000.0  1500.0  2400.0  2500.0  3200.0  3300.0
+1400.0  1600.0  2100.0  2300.0  2900.0  3200.0
+1500.0  2000.0  2400.0  2600.0  2800.0  3000.0
+1400.0  1900.0  2300.0  2600.0  2800.0  3100.0
+1600.0  1700.0  2500.0  2600.0  2800.0  3200.0
+2000.0  2200.0  2800.0  3000.0  3300.0  3500.0
+2000.0  2400.0  2700.0  2800.0  3200.0  3300.0
+1400.0  1600.0  1700.0  1900.0  3200.0  3400.0
+2100.0  2200.0  2400.0  2700.0  3000.0  3300.0
+2100.0  2400.0  2800.0  3000.0  3100.0  3300.0
+1800.0  2000.0  2300.0  2400.0  3100.0  3400.0
+1400.0  1700.0  2600.0  2700.0  3000.0  3300.0
+1300.0  1700.0  2200.0  2500.0  3200.0  3400.0
+1500.0  1900.0  2300.0  2600.0  2800.0  3100.0
+2200.0  2500.0  2700.0  2800.0  3200.0  3400.0
+2100.0  2200.0  2500.0  2800.0  3000.0  3200.0
+1700.0  1900.0  2300.0  2600.0  2800.0  3000.0
+1800.0  2000.0  2400.0  2700.0  2900.0  3300.0
+1500.0  1800.0  2000.0  2400.0  3000.0  3100.0
+1500.0  1700.0  1800.0  2600.0  3100.0  3200.0
+1200.0  1700.0  2300.0  2600.0  3000.0  3200.0
+1400.0  1500.0  1900.0  2700.0  3000.0  3100.0
+1600.0  2100.0  2300.0  2700.0  3000.0  3100.0
+1700.0  2300.0  2400.0  2700.0  3100.0  3200.0
+1800.0  2300.0  2400.0  2700.0  2900.0  3100.0
+1400.0  1500.0  1900.0  2500.0  2800.0  3000.0
+1300.0  1500.0  1900.0  2600.0  3000.0  3100.0
+1500.0  1600.0  2000.0  2500.0  2900.0  3100.0
+1500.0  1900.0  2300.0  2800.0  3200.0  3300.0
+1900.0  2000.0  2500.0  2700.0  3000.0  3100.0
+1400.0  1500.0  2000.0  2500.0  2800.0  3000.0
+1400.0  1500.0  2000.0  2600.0  3000.0  3100.0
+1700.0  2000.0  2200.0  2600.0  2700.0  3000.0
+1400.0  1700.0  2000.0  2500.0  3100.0  3200.0
+1700.0  1900.0  2400.0  2700.0  2800.0  3100.0
+1700.0  2000.0  2300.0  2500.0  2800.0  3100.0
+1400.0  1600.0  1900.0  2400.0  2700.0  3000.0
+1500.0  1700.0  1900.0  2400.0  2700.0  3000.0
+1400.0  1500.0  1900.0  2800.0  3100.0  3200.0
+1400.0  1900.0  2200.0  2600.0  3100.0  3200.0
+1200.0  1600.0  2200.0  2500.0  3000.0  3100.0
+1500.0  1800.0  2500.0  2800.0  3000.0  3200.0
+1200.0  1900.0  2600.0  2700.0  3200.0  3300.0
+1700.0  2100.0  2300.0  2500.0  2700.0  3200.0
+1300.0  1600.0  2100.0  2300.0  2800.0  3200.0
+1800.0  2000.0  2200.0  2800.0  3100.0  3200.0
+2100.0  2400.0  2900.0  3000.0  3300.0  3500.0
+1700.0  1900.0  2600.0  2900.0  3200.0  3300.0
+2100.0  2500.0  2900.0  3000.0  3200.0  3300.0
+2000.0  2300.0  2800.0  2900.0  3100.0  3400.0
+1300.0  1500.0  2100.0  2400.0  2800.0  3200.0
+1600.0  1700.0  2000.0  2700.0  3000.0  3100.0
+1500.0  1800.0  2000.0  2500.0  3000.0  3100.0
+1500.0  1800.0  2200.0  2700.0  2900.0  3100.0
+1600.0  1700.0  2100.0  2400.0  2600.0  3100.0
+1500.0  1900.0  2300.0  2400.0  2900.0  3300.0
+1300.0  2000.0  2400.0  2700.0  3100.0  3200.0
+1300.0  2000.0  2300.0  2700.0  3300.0  3400.0
+1700.0  2200.0  2400.0  2800.0  3200.0  3300.0
+1400.0  1900.0  2600.0  2900.0  3200.0  3300.0
+1400.0  1700.0  2000.0  2400.0  3100.0  3200.0
+1400.0  1600.0  2300.0  2500.0  2700.0  3000.0
+1500.0  1600.0  2300.0  2600.0  3100.0  3200.0
+1500.0  1900.0  2200.0  2400.0  3300.0  3400.0
+1200.0  1900.0  2100.0  2400.0  2900.0  3100.0
+1000.0  2300.0  2600.0  2800.0  3200.0  3300.0
+2200.0  2300.0  2600.0  2900.0  3300.0  3400.0
+1400.0  1600.0  2600.0  2700.0  3200.0  3300.0
+1300.0  2100.0  2500.0  2700.0  3100.0  3200.0
+1400.0  1600.0  2500.0  2600.0  3000.0  3400.0
+1200.0  1800.0  2700.0  2800.0  3000.0  3100.0
+1100.0  2000.0  2600.0  2700.0  3100.0  3200.0
+1000.0  1900.0  2700.0  2800.0  3100.0  3200.0
+1100.0  1900.0  2700.0  2800.0  3200.0  3300.0
+1200.0  1800.0  2500.0  2600.0  3000.0  3200.0
+2000.0  2100.0  2500.0  2600.0  3100.0  3200.0
+1400.0  2000.0  2500.0  2700.0  3200.0  3300.0
+2300.0  2400.0  2900.0  3100.0  3300.0  3400.0
+1600.0  1900.0  2300.0  2500.0  2900.0  3100.0
+1300.0  2200.0  2400.0  2900.0  3300.0  3400.0
+1300.0  2100.0  2200.0  2500.0  3200.0  3300.0
+1300.0  1900.0  2500.0  2600.0  3000.0  3100.0
+1300.0  1900.0  2500.0  2600.0  3100.0  3200.0
+1300.0  2000.0  2500.0  2600.0  3100.0  3200.0
+1400.0  1600.0  2500.0  2600.0  3200.0  3300.0
+1700.0  1800.0  2300.0  2600.0  3000.0  3400.0
+1600.0  1800.0  2300.0  2700.0  3200.0  3400.0
+1300.0  1500.0  1600.0  2600.0  3200.0  3300.0
+1300.0  1500.0  1600.0  2500.0  3300.0  3400.0
+1300.0  1500.0  1600.0  2700.0  3300.0  3400.0
+2100.0  2500.0  3000.0  3100.0  3300.0  3400.0
+1400.0  1900.0  2300.0  2400.0  3100.0  3200.0
+1600.0  2200.0  2300.0  2600.0  3300.0  3400.0
+1300.0  1600.0  1700.0  2700.0  3100.0  3200.0
+1800.0  2300.0  2500.0  2800.0  3100.0  3300.0
+1500.0  1600.0  2400.0  2600.0  3100.0  3400.0
+1200.0  1900.0  2200.0  2400.0  3000.0  3100.0
+1400.0  1900.0  2200.0  2700.0  3100.0  3200.0
+1300.0  1700.0  2300.0  2600.0  2900.0  3100.0
+1300.0  2000.0  2300.0  2600.0  3200.0  3300.0
+1800.0  1900.0  2400.0  2600.0  3200.0  3500.0
+1700.0  1800.0  2400.0  2700.0  2900.0  3300.0
+1400.0  2000.0  2400.0  2500.0  2700.0  2900.0
+1400.0  2100.0  2400.0  2500.0  2700.0  3100.0
+1500.0  1700.0  2300.0  2700.0  2900.0  3200.0
+1200.0  1300.0  2300.0  2800.0  3000.0  3200.0
+1200.0  1400.0  2100.0  2600.0  3000.0  3300.0
+1600.0  1700.0  2500.0  2700.0  2800.0  3200.0
+1700.0  2100.0  2200.0  2700.0  3000.0  3100.0
+1400.0  1500.0  2100.0  2400.0  2900.0  3200.0
+1700.0  2100.0  2200.0  2600.0  3100.0  3200.0
+1600.0  1900.0  2300.0  2500.0  2900.0  3000.0
+1300.0  1500.0  2000.0  2600.0  2900.0  3000.0
+1800.0  1900.0  2100.0  2300.0  3000.0  3200.0
+1100.0  1500.0  2500.0  2800.0  3000.0  3200.0
+1900.0  2000.0  2200.0  2400.0  2800.0  3200.0
+1800.0  1900.0  2700.0  2800.0  3100.0  3300.0
+1200.0  1400.0  2000.0  2700.0  3000.0  3100.0
+1300.0  1400.0  1900.0  2000.0  2600.0  3200.0
+1000.0  1300.0  2400.0  2600.0  2800.0  3200.0
+1700.0  1800.0  2200.0  2400.0  2600.0  3000.0
+2000.0  2300.0  2400.0  2700.0  2900.0  3000.0
+1600.0  1700.0  2000.0  2200.0  2500.0  3100.0
+1700.0  2300.0  2700.0  2800.0  3200.0  3400.0
+1600.0  1700.0  2300.0  2600.0  2700.0  3000.0
+1400.0  1500.0  2000.0  2700.0  2900.0  3100.0
+1100.0  1400.0  2200.0  2600.0  2800.0  3000.0
+1700.0  2100.0  2300.0  2600.0  3000.0  3300.0
+1400.0  1500.0  1700.0  1800.0  2700.0  3200.0
+1500.0  1600.0  1900.0  2000.0  2600.0  3200.0
+1000.0  1300.0  2400.0  2600.0  2900.0  3300.0
+1300.0  1500.0  1900.0  2500.0  2700.0  3000.0
+1800.0  1900.0  2200.0  2600.0  2900.0  3300.0
+1300.0  1400.0  1700.0  1800.0  2700.0  3200.0
+1700.0  1800.0  2000.0  2500.0  2700.0  2900.0
+1800.0  2000.0  2300.0  2700.0  2800.0  3100.0
+1600.0  1700.0  2200.0  2800.0  2900.0  3100.0
+1800.0  2100.0  2800.0  2900.0  3200.0  3400.0
+1700.0  2100.0  2800.0  2900.0  3100.0  3400.0
+1900.0  2400.0  2700.0  2800.0  3400.0  3500.0
+1600.0  1700.0  2400.0  2700.0  2800.0  3200.0
+1600.0  1900.0  2200.0  2500.0  3000.0  3300.0
+1400.0  1500.0  2000.0  2500.0  2800.0  3100.0
+1200.0  1300.0  2100.0  2500.0  2700.0  3000.0
+1900.0  2200.0  2600.0  2800.0  3400.0  3500.0
+1500.0  1900.0  2600.0  2700.0  2900.0  3300.0
+1400.0  1500.0  2000.0  2100.0  2700.0  3100.0
+1600.0  1700.0  2100.0  2200.0  2600.0  3200.0
+1700.0  2200.0  2500.0  2700.0  3000.0  3100.0
+1800.0  2300.0  2500.0  2600.0  2900.0  3100.0
+1100.0  1300.0  2500.0  2700.0  2900.0  3200.0
+1400.0  1500.0  1900.0  2000.0  2600.0  3200.0
+1600.0  1700.0  2000.0  2100.0  2800.0  3300.0
+1300.0  1900.0  2300.0  2600.0  2700.0  3000.0
+1800.0  1900.0  2500.0  2700.0  2900.0  3100.0
+2100.0  2200.0  2700.0  3000.0  3100.0  3300.0
+2000.0  2100.0  2700.0  2900.0  3200.0  3400.0
+1500.0  1700.0  1800.0  2200.0  3200.0  3300.0
+1500.0  1800.0  2000.0  2700.0  3200.0  3300.0
+1800.0  1900.0  2100.0  2400.0  3100.0  3200.0
+1500.0  1600.0  2400.0  2500.0  3200.0  3300.0
+1400.0  1800.0  2400.0  2600.0  3300.0  3400.0
+1400.0  1800.0  2400.0  2600.0  3200.0  3400.0
+2300.0  2600.0  2800.0  3100.0  3300.0  3400.0
+2000.0  2100.0  2800.0  2900.0  3300.0  3400.0
+1400.0  1700.0  2600.0  2700.0  3200.0  3300.0
+1300.0  1700.0  2500.0  2700.0  3200.0  3300.0
+1500.0  1800.0  2200.0  2700.0  3000.0  3300.0
+1800.0  2000.0  2300.0  2500.0  2900.0  3300.0
+1300.0  1800.0  2400.0  2500.0  3200.0  3400.0
+1500.0  1900.0  2500.0  2600.0  3000.0  3300.0
+1700.0  1800.0  2700.0  2800.0  3200.0  3400.0
+1500.0  1800.0  2700.0  2800.0  3200.0  3400.0
+1500.0  1800.0  2700.0  2800.0  3300.0  3400.0
+1400.0  1600.0  2400.0  2500.0  3200.0  3300.0
+1600.0  1800.0  2400.0  2800.0  3100.0  3300.0
+1500.0  2100.0  2500.0  2600.0  3100.0  3300.0
+1500.0  1600.0  2500.0  2600.0  3000.0  3400.0
+1200.0  1900.0  2300.0  2500.0  3100.0  3300.0
+1500.0  1600.0  2300.0  2500.0  3200.0  3300.0
+1600.0  2300.0  2600.0  2800.0  3300.0  3400.0
+2100.0  2400.0  2500.0  2700.0  3200.0  3300.0
+1100.0  1800.0  2500.0  2600.0  2900.0  3200.0
+1400.0  1700.0  2100.0  2600.0  3000.0  3200.0
+1700.0  2000.0  2500.0  2600.0  3000.0  3100.0
+1100.0  1500.0  2500.0  2600.0  3100.0  3300.0
+1500.0  1600.0  2200.0  2400.0  2600.0  3200.0
+1600.0  1800.0  2300.0  2500.0  2900.0  3300.0
+1600.0  1700.0  2100.0  2300.0  3000.0  3200.0
+2000.0  2200.0  2600.0  2800.0  3300.0  3400.0
+1600.0  1700.0  1900.0  2400.0  3100.0  3300.0
+1200.0  1700.0  2300.0  2500.0  3100.0  3400.0
+1100.0  1600.0  1900.0  2200.0  3000.0  3100.0
+1400.0  1900.0  2300.0  2600.0  2900.0  3000.0
+1900.0  2200.0  2800.0  3000.0  3200.0  3400.0
+1400.0  1500.0  2200.0  2300.0  2700.0  3100.0
+1800.0  1900.0  2200.0  2600.0  3000.0  3300.0
+1700.0  1900.0  2200.0  2500.0  2700.0  3000.0
+1600.0  1800.0  2000.0  2400.0  2700.0  2800.0
+1900.0  2300.0  2700.0  2900.0  3100.0  3200.0
+1400.0  1500.0  2000.0  2400.0  2900.0  3000.0
+1800.0  2100.0  2200.0  2500.0  2700.0  3000.0
+1200.0  1300.0  1900.0  2500.0  3000.0  3100.0
+1100.0  1200.0  2500.0  2900.0  3000.0  3200.0
+1400.0  1500.0  1900.0  2000.0  2500.0  3100.0
+1400.0  1600.0  2000.0  2200.0  2500.0  3100.0
+1200.0  1700.0  2300.0  2700.0  3100.0  3300.0
+1900.0  2200.0  2300.0  2500.0  2700.0  3100.0
+1500.0  1600.0  2000.0  2100.0  2800.0  3300.0
+1500.0  1800.0  2000.0  2300.0  2600.0  2900.0
+2100.0  2200.0  2600.0  2700.0  3000.0  3100.0
+2100.0  2300.0  2700.0  2900.0  3200.0  3400.0
+1600.0  1700.0  1900.0  2000.0  2700.0  3100.0
+1300.0  1500.0  1800.0  1900.0  2500.0  3100.0
+1900.0  2500.0  2700.0  2900.0  3200.0  3300.0
+1200.0  1400.0  2000.0  2700.0  3200.0  3300.0
+1900.0  2500.0  2700.0  2800.0  3200.0  3300.0
+1200.0  1600.0  2200.0  2400.0  2900.0  3200.0
+2000.0  2200.0  2600.0  2700.0  3100.0  3400.0
+1500.0  1700.0  2000.0  2300.0  2600.0  3000.0
+1700.0  2100.0  2500.0  2700.0  3000.0  3100.0
+1800.0  2200.0  2500.0  2700.0  3000.0  3100.0
+2000.0  2400.0  2600.0  2900.0  3100.0  3200.0
+1700.0  2400.0  2500.0  2700.0  3100.0  3200.0
+1600.0  2000.0  2100.0  2600.0  3000.0  3100.0
+1500.0  2100.0  2400.0  2600.0  3000.0  3200.0
+1400.0  1600.0  2000.0  2600.0  3100.0  3200.0
+1500.0  1700.0  2000.0  2800.0  3100.0  3200.0
+1600.0  1700.0  2000.0  2700.0  3100.0  3200.0
+1400.0  2000.0  2300.0  2500.0  3000.0  3200.0
+1600.0  1800.0  2000.0  2300.0  3100.0  3300.0
+1500.0  1800.0  2300.0  2700.0  2900.0  3200.0
+1100.0  1400.0  2200.0  2300.0  3200.0  3300.0
+1800.0  2400.0  2800.0  2900.0  3200.0  3300.0
+1700.0  2400.0  2800.0  2900.0  3200.0  3300.0
+2000.0  2200.0  2800.0  3000.0  3400.0  3500.0
+1300.0  1400.0  2200.0  2900.0  3100.0  3200.0
+1200.0  1400.0  2300.0  2900.0  3100.0  3200.0
+1600.0  1900.0  2300.0  2600.0  2900.0  3300.0
+1700.0  2200.0  2300.0  2700.0  3100.0  3200.0
+1200.0  1700.0  2400.0  2700.0  3000.0  3300.0
+1500.0  1700.0  1900.0  2500.0  2900.0  3100.0
+1700.0  1800.0  2200.0  2600.0  2900.0  3300.0
+1300.0  1400.0  1900.0  2600.0  3000.0  3100.0
+1200.0  1400.0  2200.0  2500.0  2900.0  3300.0
+1500.0  1800.0  2000.0  2500.0  2900.0  3000.0
+1300.0  1400.0  2300.0  2500.0  2900.0  3300.0
+1700.0  2100.0  2300.0  2700.0  3000.0  3100.0
+1700.0  2100.0  2300.0  2800.0  3000.0  3100.0
+1200.0  1300.0  2100.0  2800.0  3200.0  3300.0
+1300.0  1600.0  2100.0  2600.0  2900.0  3100.0
+1300.0  1400.0  1800.0  2500.0  2800.0  3000.0
+1500.0  1700.0  2400.0  2600.0  2900.0  3000.0
+2100.0  2200.0  2500.0  2600.0  3000.0  3100.0
+2200.0  2300.0  2500.0  2700.0  3000.0  3200.0
+1400.0  1800.0  2000.0  2300.0  3200.0  3300.0
+1600.0  1700.0  2400.0  2700.0  3100.0  3200.0
+1600.0  1700.0  2500.0  2700.0  3000.0  3200.0
+1900.0  2500.0  2600.0  2800.0  3200.0  3300.0
+1200.0  1400.0  2600.0  2800.0  3000.0  3300.0
+1800.0  2300.0  2500.0  3000.0  3300.0  3400.0
+1200.0  1400.0  2200.0  2700.0  3200.0  3300.0
+1100.0  1400.0  2400.0  2500.0  3100.0  3400.0
+1100.0  1300.0  2400.0  2500.0  3200.0  3400.0
+1000.0  1400.0  2400.0  2500.0  3000.0  3300.0
+1800.0  1900.0  2400.0  2700.0  3200.0  3400.0
+1600.0  1700.0  2200.0  2500.0  2800.0  3300.0
+2000.0  2200.0  2400.0  2800.0  2900.0  3100.0
+1300.0  1800.0  2700.0  2800.0  3200.0  3400.0
+1800.0  2200.0  2700.0  3000.0  3400.0  3500.0
+1800.0  1900.0  2300.0  2600.0  2700.0  3000.0
+1900.0  2000.0  2400.0  2600.0  2900.0  3400.0
+1600.0  1700.0  2300.0  2700.0  3200.0  3300.0
+1600.0  1800.0  2500.0  2700.0  3200.0  3300.0
+2100.0  2500.0  2800.0  3000.0  3200.0  3400.0
+1800.0  2000.0  2300.0  2400.0  3000.0  3100.0
+2300.0  2400.0  2600.0  2900.0  3100.0  3300.0
+1600.0  1800.0  2400.0  2500.0  3000.0  3100.0
+2100.0  2500.0  2900.0  3100.0  3200.0  3300.0
+1600.0  1900.0  2500.0  2900.0  3100.0  3300.0
+1500.0  1800.0  2300.0  2400.0  3200.0  3400.0
+1300.0  1500.0  2700.0  2800.0  3100.0  3300.0
+1200.0  1500.0  2600.0  2700.0  3200.0  3300.0
+1000.0  1500.0  2700.0  2800.0  3200.0  3300.0
+1100.0  1600.0  2600.0  2700.0  3200.0  3300.0
+1500.0  1700.0  2600.0  2700.0  3000.0  3300.0
+1100.0  1700.0  2800.0  2900.0  3200.0  3400.0
+1300.0  1700.0  2300.0  2500.0  3300.0  3400.0
+1700.0  2100.0  2400.0  2500.0  3200.0  3300.0
+1500.0  1800.0  2100.0  2400.0  3300.0  3400.0
+2000.0  2100.0  2400.0  2600.0  2800.0  3100.0
+1600.0  1700.0  2300.0  2800.0  3100.0  3300.0
+1900.0  2100.0  2800.0  3000.0  3300.0  3400.0
+2000.0  2100.0  2300.0  2600.0  2900.0  3200.0
+1100.0  1500.0  2500.0  2700.0  2900.0  3300.0
+1600.0  1800.0  2200.0  2500.0  2700.0  2800.0
+2000.0  2200.0  2500.0  2600.0  3100.0  3200.0
+1400.0  1600.0  2100.0  2900.0  3100.0  3200.0
+1900.0  2400.0  2800.0  3000.0  3200.0  3300.0
+2000.0  2300.0  2500.0  2700.0  2900.0  3200.0
+1700.0  2100.0  2300.0  2800.0  3200.0  3300.0
+1400.0  2000.0  2300.0  2500.0  3100.0  3300.0
+2000.0  2500.0  2600.0  3000.0  3200.0  3300.0
+1500.0  1700.0  2500.0  2600.0  3000.0  3400.0
+1100.0  2000.0  2500.0  2700.0  3200.0  3300.0
+1400.0  1600.0  2600.0  2900.0  3100.0  3400.0
+1800.0  2300.0  2800.0  3000.0  3200.0  3300.0
+1700.0  2000.0  2100.0  2300.0  3300.0  3400.0
+1400.0  1700.0  1800.0  2300.0  3300.0  3400.0
+1400.0  1500.0  2300.0  2500.0  3000.0  3400.0
+1400.0  1700.0  2600.0  2700.0  3100.0  3200.0
+1500.0  1700.0  2600.0  2700.0  3200.0  3300.0
+1600.0  1800.0  2600.0  2700.0  3100.0  3300.0
+1200.0  1400.0  1500.0  2200.0  3100.0  3200.0
+1500.0  1600.0  2100.0  2400.0  2700.0  3200.0
+1000.0  1500.0  2600.0  2700.0  3000.0  3300.0
+1200.0  1500.0  1600.0  2100.0  3100.0  3200.0
+1800.0  2200.0  2600.0  3000.0  3400.0  3500.0
+1000.0  2300.0  2600.0  2700.0  3200.0  3300.0
+1400.0  1600.0  2100.0  2500.0  2800.0  3200.0
+1300.0  1900.0  2300.0  2500.0  2900.0  3300.0
+1500.0  1600.0  2400.0  2500.0  3300.0  3400.0
+1600.0  2000.0  2500.0  2800.0  3100.0  3200.0
+1000.0  2100.0  2500.0  2600.0  3100.0  3400.0
+1700.0  1800.0  2100.0  2400.0  3000.0  3100.0
+2200.0  2300.0  2600.0  2700.0  3000.0  3300.0
+1900.0  2000.0  2700.0  2800.0  3300.0  3400.0
+1500.0  1700.0  2400.0  2500.0  2900.0  3100.0
+1100.0  1600.0  2800.0  2900.0  3200.0  3300.0
+2000.0  2600.0  2800.0  3000.0  3400.0  3500.0
+1900.0  2500.0  2800.0  3100.0  3400.0  3500.0
+1200.0  1700.0  2700.0  2800.0  3200.0  3400.0
+1300.0  1600.0  2700.0  2800.0  3100.0  3400.0
+1500.0  1700.0  2700.0  2800.0  3100.0  3400.0
+1300.0  1400.0  2500.0  2800.0  3200.0  3400.0
+1700.0  2000.0  2700.0  2800.0  3300.0  3400.0
+1800.0  1900.0  2600.0  2700.0  3300.0  3400.0
+1100.0  1800.0  2700.0  2800.0  3200.0  3300.0
+2100.0  2600.0  2700.0  3000.0  3300.0  3400.0
+1300.0  1600.0  1800.0  2100.0  2900.0  3000.0
+1300.0  1500.0  2200.0  2400.0  3100.0  3400.0
+1200.0  1500.0  1700.0  2000.0  3000.0  3100.0
+1200.0  1500.0  1700.0  2100.0  3000.0  3100.0
+1300.0  2000.0  2200.0  2400.0  2700.0  3000.0
+1500.0  1800.0  2100.0  2300.0  3300.0  3400.0
+1100.0  1600.0  1800.0  2200.0  3000.0  3100.0
+1000.0  1800.0  2100.0  2400.0  3000.0  3100.0
+1500.0  1600.0  2300.0  2400.0  2900.0  3400.0
+1400.0  1600.0  1800.0  2100.0  2900.0  3000.0
+1100.0  1500.0  2100.0  2200.0  3100.0  3200.0
+1300.0  1700.0  1800.0  2200.0  3000.0  3100.0
+1500.0  1700.0  2100.0  2300.0  2700.0  2900.0
+1100.0  1700.0  1900.0  2100.0  2900.0  3000.0
+1400.0  1700.0  2100.0  2400.0  2900.0  3200.0
+1300.0  1600.0  1800.0  2300.0  3000.0  3100.0
+1200.0  1500.0  1700.0  2300.0  3000.0  3100.0
+1600.0  1800.0  1900.0  2300.0  3000.0  3100.0
+1700.0  2200.0  2600.0  2900.0  3100.0  3300.0
+1900.0  2400.0  2500.0  2700.0  2900.0  3100.0
+1800.0  2000.0  2100.0  2400.0  3100.0  3200.0
+1700.0  2400.0  2700.0  2800.0  3000.0  3200.0
+1800.0  1900.0  2300.0  2600.0  2800.0  3300.0
+1300.0  1900.0  2500.0  2600.0  3200.0  3400.0
+1400.0  1600.0  2300.0  2400.0  2800.0  3100.0
+1900.0  2000.0  2300.0  2700.0  3000.0  3300.0
+1700.0  1800.0  2400.0  2700.0  3200.0  3400.0
+1800.0  2000.0  2300.0  2600.0  2900.0  3300.0
+2100.0  2300.0  2600.0  2700.0  3300.0  3400.0
+1400.0  1600.0  2200.0  2400.0  3200.0  3300.0
+1300.0  1600.0  1800.0  2200.0  2800.0  2900.0
+1500.0  1700.0  1900.0  2600.0  2800.0  3000.0
+1700.0  2200.0  2500.0  2600.0  3100.0  3300.0
+1200.0  1700.0  1800.0  2100.0  3000.0  3100.0
+1100.0  1800.0  2500.0  2600.0  3300.0  3400.0
+1100.0  1900.0  2100.0  2300.0  2900.0  3000.0
+1200.0  1700.0  2400.0  2600.0  3100.0  3400.0
+1100.0  1700.0  2600.0  2700.0  3000.0  3300.0
+1000.0  1700.0  2700.0  2800.0  3200.0  3400.0
+1100.0  1900.0  2200.0  2300.0  3200.0  3300.0
+1300.0  1900.0  2300.0  2500.0  3000.0  3300.0
+1200.0  1600.0  2600.0  2700.0  3100.0  3400.0
+1300.0  1600.0  1800.0  2400.0  3000.0  3200.0
+1400.0  1700.0  1800.0  2100.0  3200.0  3400.0
+1000.0  1500.0  2300.0  2400.0  3200.0  3400.0
+900.0  1700.0  2600.0  2700.0  3300.0  3400.0
+1100.0  1400.0  2500.0  2700.0  3100.0  3300.0
+1800.0  1900.0  2300.0  2500.0  2800.0  2900.0
+2100.0  2300.0  2700.0  2900.0  3400.0  3500.0
+2100.0  2200.0  2300.0  2400.0  3000.0  3300.0
+1800.0  2000.0  2400.0  2500.0  2800.0  3000.0
+1700.0  1900.0  2300.0  2500.0  2700.0  3000.0
+1300.0  1400.0  2300.0  2900.0  3100.0  3200.0
+2100.0  2300.0  2600.0  2900.0  3100.0  3200.0
+1400.0  1800.0  2200.0  2300.0  3200.0  3400.0
+2100.0  2500.0  2900.0  3200.0  3400.0  3500.0
+1700.0  1900.0  2100.0  2400.0  3200.0  3400.0
+1600.0  1700.0  2300.0  2600.0  2800.0  2900.0
+1800.0  2000.0  2300.0  2700.0  2800.0  3000.0
+1900.0  2300.0  2600.0  2800.0  3000.0  3100.0
+1300.0  1600.0  2200.0  2600.0  3100.0  3200.0
+1500.0  1600.0  2400.0  2500.0  2900.0  3400.0
+1600.0  1800.0  2000.0  2700.0  3100.0  3200.0
+1000.0  1800.0  2600.0  2700.0  3200.0  3400.0
+900.0  1800.0  2500.0  2600.0  3300.0  3400.0
+1300.0  2200.0  2300.0  2700.0  3200.0  3300.0
+1200.0  2000.0  2300.0  2500.0  3300.0  3400.0
+1100.0  1500.0  2400.0  2500.0  3100.0  3400.0
+1300.0  1700.0  1900.0  2100.0  3000.0  3100.0
+2000.0  2100.0  2500.0  2600.0  3300.0  3500.0
+1500.0  1800.0  2000.0  2500.0  3300.0  3400.0
+2000.0  2100.0  2800.0  2900.0  3100.0  3300.0
+2300.0  2400.0  2600.0  2800.0  3200.0  3300.0
+1400.0  1900.0  2200.0  2300.0  3100.0  3200.0
+1500.0  1900.0  2600.0  2700.0  3200.0  3300.0
+1500.0  1600.0  2200.0  2600.0  3100.0  3400.0
+1700.0  1800.0  2500.0  2700.0  3300.0  3400.0
+1100.0  1600.0  2400.0  2500.0  3300.0  3400.0
+900.0  1600.0  2600.0  2700.0  3300.0  3400.0
+1400.0  1500.0  2200.0  2600.0  3200.0  3400.0
+1200.0  2000.0  2400.0  2500.0  2700.0  3200.0
+1300.0  1500.0  2500.0  2600.0  3200.0  3300.0
+1500.0  1600.0  2300.0  2600.0  3200.0  3400.0
+1300.0  2000.0  2300.0  2800.0  3000.0  3200.0
+2000.0  2100.0  2600.0  2700.0  3000.0  3100.0
+2000.0  2200.0  2600.0  2700.0  3000.0  3100.0
+2100.0  2200.0  2800.0  2900.0  3100.0  3200.0
+1900.0  2100.0  2500.0  2600.0  3000.0  3100.0
+1900.0  2100.0  2300.0  2500.0  2800.0  2900.0
+1800.0  2000.0  2600.0  2700.0  3000.0  3400.0
+1400.0  1700.0  1800.0  2500.0  2800.0  3200.0
+1300.0  1800.0  2200.0  2300.0  3200.0  3400.0
+1400.0  1600.0  1700.0  2200.0  3200.0  3400.0
+1400.0  1500.0  1600.0  2100.0  3200.0  3400.0
+1700.0  2100.0  2300.0  2500.0  3300.0  3400.0
+1600.0  2000.0  2600.0  2800.0  3200.0  3400.0
+1400.0  1600.0  2700.0  2800.0  3000.0  3300.0
+1400.0  1500.0  1600.0  2200.0  3300.0  3400.0
+1600.0  1700.0  2500.0  2600.0  3300.0  3400.0
+1000.0  1500.0  2300.0  2400.0  3000.0  3100.0
+1400.0  1500.0  1700.0  1800.0  3200.0  3300.0
+1600.0  2000.0  2300.0  2500.0  2800.0  3100.0
+1900.0  2500.0  2600.0  2900.0  3400.0  3500.0
+1800.0  1900.0  2500.0  2600.0  3300.0  3500.0
+1500.0  1900.0  2200.0  2300.0  3200.0  3300.0
+1900.0  2200.0  2500.0  2600.0  3300.0  3400.0
+1400.0  2000.0  2300.0  2600.0  3100.0  3300.0
+1800.0  1900.0  2300.0  2400.0  3200.0  3500.0
+1100.0  1900.0  2500.0  2600.0  2900.0  3000.0
+1600.0  1700.0  2300.0  2400.0  2900.0  3000.0
+1700.0  2300.0  2500.0  2700.0  3000.0  3100.0
+2100.0  2200.0  2700.0  2900.0  3100.0  3400.0
+1400.0  1900.0  2300.0  2600.0  2800.0  2900.0
+1800.0  2000.0  2200.0  2400.0  2600.0  2900.0
+1400.0  2100.0  2500.0  2600.0  2900.0  3100.0
+1700.0  1900.0  2400.0  2800.0  3200.0  3400.0
+1000.0  1500.0  2300.0  2400.0  3000.0  3300.0
+1500.0  2000.0  2300.0  2800.0  3200.0  3300.0
+1900.0  2000.0  2300.0  2600.0  3100.0  3400.0
+1300.0  1500.0  2400.0  2600.0  3300.0  3400.0
+2100.0  2500.0  2900.0  3100.0  3200.0  3400.0
+1400.0  1700.0  1800.0  2400.0  3200.0  3300.0
+1400.0  1500.0  2300.0  2600.0  3100.0  3400.0
+1000.0  1900.0  2600.0  2700.0  3000.0  3100.0
+1100.0  1800.0  2500.0  2700.0  3200.0  3300.0
+1700.0  1800.0  2200.0  2700.0  2800.0  3200.0
+2000.0  2200.0  2700.0  2800.0  3100.0  3200.0
+1300.0  2100.0  2400.0  2500.0  2900.0  3100.0
+1300.0  2000.0  2400.0  2500.0  2800.0  3000.0
+1500.0  2100.0  2500.0  2600.0  2900.0  3100.0
+1700.0  2200.0  2500.0  2700.0  3000.0  3200.0
+1600.0  2100.0  2500.0  2600.0  3000.0  3100.0
+1700.0  2200.0  2500.0  2600.0  3000.0  3200.0
+1800.0  2200.0  2300.0  2600.0  3000.0  3200.0
+1300.0  1500.0  1700.0  2100.0  3300.0  3400.0
+1300.0  1500.0  1700.0  2000.0  3300.0  3400.0
+1300.0  1900.0  2700.0  2800.0  3200.0  3400.0
+1700.0  2500.0  2700.0  2900.0  3300.0  3400.0
+1100.0  1700.0  2100.0  2200.0  3300.0  3400.0
+1000.0  1800.0  2700.0  2900.0  3300.0  3400.0
+1500.0  1600.0  2500.0  2600.0  3200.0  3300.0
+1100.0  1900.0  2600.0  2800.0  3000.0  3100.0
+1300.0  1500.0  2400.0  2500.0  3200.0  3300.0
+1700.0  2100.0  2300.0  2400.0  2800.0  3300.0
+1300.0  1500.0  1700.0  1800.0  3200.0  3400.0
+2000.0  2100.0  2400.0  2700.0  2900.0  3300.0
+1400.0  1500.0  2500.0  2600.0  3000.0  3200.0
+1400.0  1500.0  2000.0  2900.0  3300.0  3400.0
+1300.0  1500.0  2600.0  2700.0  3100.0  3200.0
+1100.0  1300.0  2700.0  2800.0  3200.0  3300.0
+1100.0  1300.0  2500.0  2600.0  2900.0  3100.0
+1900.0  2300.0  2400.0  2600.0  2700.0  3100.0
+1300.0  2100.0  2200.0  2600.0  3200.0  3300.0
+1100.0  1800.0  2400.0  2500.0  2900.0  3100.0
+1000.0  1800.0  2200.0  2300.0  3200.0  3300.0
+1500.0  1700.0  1800.0  2600.0  3200.0  3400.0
+1500.0  2000.0  2400.0  2600.0  2700.0  3100.0
+2000.0  2100.0  2300.0  2500.0  2700.0  3300.0
+1000.0  1500.0  2700.0  2800.0  3300.0  3400.0
diff --git a/gr-vocoder/lib/codec2/codebook/lspjvm1.txt 
b/gr-vocoder/lib/codec2/codebook/lspjvm1.txt
new file mode 100644
index 0000000..9cd10ed
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspjvm1.txt
@@ -0,0 +1,513 @@
+10 512
+0.435217 0.668864 1.010296 1.220420 1.503978 1.784675 2.135458 2.357467 
2.618905 2.738042
+0.179285 0.333160 0.500638 0.796950 1.039987 1.234969 1.652301 1.848233 
2.625555 2.804968
+0.268785 0.356576 0.595753 1.044339 1.249382 1.428680 1.686986 1.864689 
2.339905 2.513801
+0.120070 0.165585 0.484694 0.959160 1.237528 1.529146 1.837513 2.107730 
2.487495 2.766846
+0.150214 0.229487 0.628240 0.961255 1.337065 1.598306 1.919745 2.217861 
2.537318 2.759560
+0.268624 0.345980 0.569637 0.754737 0.916538 1.508543 1.786354 1.954418 
2.369530 2.501822
+0.246064 0.468874 0.662711 0.890015 1.147153 1.510431 1.781056 2.095943 
2.655391 2.800369
+0.191631 0.280628 0.393229 0.611761 1.420170 1.707741 1.873032 2.101553 
2.280348 2.499488
+0.361668 0.507047 0.789974 1.045992 1.502378 1.677032 1.905337 2.162555 
2.432259 2.590873
+0.208160 0.294285 0.448634 0.694229 0.872517 1.070315 1.703352 2.168742 
2.426189 2.603657
+0.316939 0.513618 0.705487 0.917036 1.175989 1.311140 1.618599 2.037840 
2.450523 2.579395
+0.241068 0.377728 0.521595 0.717203 1.310414 1.539991 1.736431 2.098926 
2.297917 2.587348
+0.234937 0.281875 0.780422 1.440733 1.609428 1.756430 1.977206 2.148605 
2.602032 2.722501
+0.178679 0.242672 0.416988 0.708348 0.955620 1.176671 1.781798 2.054488 
2.281591 2.448112
+0.345036 0.421080 0.740887 1.165442 1.324944 1.488798 1.763463 1.906174 
2.395050 2.649158
+0.249586 0.357494 0.520747 0.847195 1.428408 1.597779 1.778194 2.178502 
2.413437 2.564662
+0.295235 0.574231 1.249097 1.464097 1.727559 1.926790 2.095363 2.284830 
2.567065 2.722480
+0.341930 0.427307 0.634001 0.804212 0.905629 1.333373 1.790329 1.892756 
2.445823 2.602828
+0.363948 0.508985 0.667357 0.946354 1.437562 1.626545 1.811141 2.039091 
2.291882 2.435493
+0.163514 0.277407 0.409207 0.902065 1.189070 1.339636 1.802411 1.960770 
2.652930 2.818987
+0.302643 0.359753 0.651207 1.208021 1.423702 1.548149 1.882130 2.015591 
2.260535 2.578896
+0.155928 0.216908 0.381812 0.654803 1.112373 1.589935 1.847562 1.976716 
2.224078 2.725337
+0.274981 0.347675 0.572000 0.736046 0.894248 1.632373 1.891391 2.056890 
2.602900 2.721779
+0.154496 0.243461 0.348174 0.689505 1.573807 1.700306 1.943182 2.101580 
2.564661 2.773169
+0.292612 0.466612 0.795936 1.047468 1.413693 1.750848 2.062894 2.340073 
2.613612 2.769493
+0.242896 0.361500 0.555859 0.793597 0.932291 1.409467 1.863863 2.009534 
2.464500 2.677491
+0.221646 0.344724 0.554564 0.729403 1.136575 1.301772 1.529181 2.163590 
2.395821 2.610805
+0.160969 0.224467 0.371545 0.626879 1.160953 1.444229 1.675966 1.879779 
2.478590 2.672023
+0.214172 0.341585 0.676575 0.977397 1.325429 1.720096 2.072595 2.369539 
2.635285 2.778792
+0.203311 0.289438 0.458739 0.914153 1.122885 1.302925 1.583844 1.886828 
2.187869 2.427039
+0.280383 0.371600 0.824827 1.100246 1.236225 1.398923 1.578041 2.016000 
2.368973 2.506732
+0.170627 0.251778 0.393686 0.608347 1.287599 1.446665 1.793278 2.036554 
2.310153 2.752439
+0.180580 0.288746 0.987854 1.431706 1.677216 1.915661 2.124939 2.289452 
2.589612 2.754264
+0.176335 0.266263 0.445421 0.706403 0.875402 1.422918 1.758670 1.960910 
2.410676 2.601751
+0.216173 0.287404 0.480696 1.009765 1.291304 1.476644 1.895584 2.064286 
2.284064 2.483108
+0.176523 0.273934 0.403407 0.966139 1.304724 1.436612 1.944728 2.084836 
2.544458 2.762416
+0.311836 0.550501 0.879591 1.096228 1.276661 1.477859 1.817706 2.154340 
2.560467 2.779841
+0.179765 0.250560 0.455939 1.023886 1.225132 1.475662 1.734617 1.918713 
2.147342 2.438235
+0.271033 0.457235 0.599622 0.821049 0.940125 1.200937 1.849716 1.986656 
2.548168 2.751578
+0.179326 0.248002 0.426405 0.817060 1.285888 1.565019 2.117359 2.298712 
2.572404 2.752701
+0.374409 0.535936 0.897009 1.185070 1.591569 1.757202 1.967944 2.179985 
2.457394 2.622641
+0.185472 0.282752 0.409439 0.657499 0.856446 1.029396 1.879933 2.069323 
2.344742 2.753103
+0.375964 0.578457 0.758945 0.929339 1.127475 1.259437 1.704109 2.122973 
2.336031 2.498298
+0.225641 0.361030 0.501679 0.783379 1.314851 1.452621 1.714150 1.987157 
2.225703 2.724361
+0.144996 0.252919 0.632145 1.226038 1.575343 1.901549 2.171481 2.390554 
2.682293 2.809834
+0.172022 0.263338 0.448634 0.729435 0.984007 1.171597 1.757049 1.990232 
2.321305 2.771210
+0.235731 0.351117 0.796871 1.055711 1.300224 1.591818 1.895875 2.122918 
2.417888 2.599817
+0.254053 0.319371 0.455623 1.086141 1.664667 1.915882 2.059084 2.233416 
2.452037 2.586788
+0.375538 0.742993 1.139911 1.337758 1.735562 2.013906 2.315012 2.483433 
2.651575 2.755211
+0.247245 0.481131 0.710366 0.897602 1.121094 1.271709 1.787346 2.199502 
2.429663 2.740668
+0.226103 0.311441 0.501648 0.844424 1.362818 1.531338 1.777474 1.989925 
2.187493 2.358501
+0.195862 0.296224 0.609554 0.783241 1.243472 1.445477 1.637032 2.022645 
2.483557 2.646137
+0.233302 0.299441 0.472792 1.249457 1.457875 1.601860 1.831433 1.993719 
2.597193 2.755433
+0.168096 0.224183 0.382700 0.596214 1.060587 1.294418 1.605760 1.848489 
2.357695 2.569186
+0.330050 0.445912 0.661713 0.874446 1.000792 1.452973 1.943987 2.076916 
2.423883 2.612359
+0.226382 0.287303 0.517631 0.806229 1.309009 1.885280 2.160514 2.286410 
2.526377 2.660822
+0.203170 0.499314 0.887358 1.235074 1.462922 1.698260 1.999316 2.229225 
2.571613 2.766691
+0.307531 0.378353 0.573606 0.712218 0.850169 1.308996 2.059092 2.263816 
2.497943 2.676815
+0.276203 0.510250 0.686800 0.902844 1.205197 1.327979 1.718894 2.038947 
2.256393 2.697149
+0.161948 0.229115 0.393619 0.683613 1.137811 1.322692 1.783723 1.961584 
2.389073 2.636082
+0.201334 0.276773 0.468994 0.967017 1.475971 1.632424 1.965774 2.197278 
2.480593 2.701553
+0.214587 0.315421 0.469498 0.733397 1.146003 1.277911 1.727839 2.227135 
2.440264 2.681122
+0.255602 0.394609 0.743393 0.977796 1.199085 1.405972 1.918336 2.224828 
2.479187 2.663394
+0.245989 0.352625 0.517055 0.802830 1.558712 1.795653 1.944055 2.133640 
2.333267 2.479982
+0.337423 0.480433 0.869036 1.139571 1.630764 1.822959 2.074843 2.292613 
2.479130 2.625317
+0.220974 0.358850 0.571640 0.752791 0.937013 1.151721 1.674398 2.062466 
2.558717 2.784838
+0.267518 0.331708 0.541111 1.116547 1.411121 1.532868 1.792949 1.933520 
2.248940 2.628644
+0.084613 0.105083 0.297424 0.916949 1.256301 1.567029 1.885388 2.189875 
2.522795 2.792102
+0.205328 0.287223 0.724462 1.032395 1.457708 1.642169 1.925628 2.175524 
2.429638 2.605488
+0.232554 0.338724 0.502115 0.859975 1.044090 1.245652 1.806555 1.999641 
2.261164 2.459984
+0.291638 0.379172 0.626072 0.792796 0.959124 1.504886 1.734465 1.919612 
2.614359 2.722709
+0.191554 0.263114 0.426797 0.610628 1.077406 1.829543 2.021948 2.210572 
2.427652 2.613828
+0.389151 0.679476 0.915414 1.036635 1.250846 1.586610 2.040972 2.281500 
2.567941 2.718815
+0.203200 0.301280 0.470357 0.668716 0.851737 0.980327 1.570862 2.037617 
2.289067 2.693877
+0.304064 0.405934 0.710274 0.962705 1.128820 1.341667 1.635050 1.845382 
2.079916 2.507510
+0.171777 0.240705 0.409371 0.786432 1.223202 1.375689 1.691760 1.866080 
2.350406 2.493942
+0.231251 0.277994 0.557867 1.325822 1.660352 1.779477 2.007138 2.172322 
2.440457 2.652308
+0.188101 0.259494 0.412543 0.624843 0.839549 1.033700 1.634128 1.931944 
2.246076 2.425773
+0.361304 0.419465 0.795676 1.184605 1.296796 1.578447 1.841746 1.997361 
2.540538 2.687139
+0.274372 0.338938 0.492443 0.963516 1.509514 1.706378 1.869885 2.077166 
2.261281 2.444183
+0.415990 0.652103 1.031293 1.269551 1.572746 1.772975 2.004659 2.175272 
2.430606 2.596553
+0.242045 0.370942 0.534392 0.763529 1.001165 1.129764 1.682192 2.144644 
2.324478 2.715697
+0.377438 0.588168 0.765394 0.976873 1.356652 1.490088 1.737970 2.006774 
2.213691 2.389973
+0.191625 0.284123 0.405342 1.016777 1.432730 1.547592 1.813930 1.958317 
2.470765 2.649257
+0.272672 0.349555 0.633911 1.152234 1.303938 1.547640 1.919504 2.047696 
2.562779 2.730575
+0.168423 0.236330 0.421468 0.831345 1.083543 1.553448 1.880726 2.064701 
2.370864 2.632945
+0.219318 0.301481 0.513617 0.765086 1.026019 1.514647 2.048203 2.248568 
2.499810 2.657069
+0.232695 0.347947 0.495203 0.718830 1.423013 1.722493 1.879584 2.165044 
2.420251 2.589658
+0.270284 0.336865 0.684929 1.155789 1.690421 1.876744 2.027359 2.226178 
2.446748 2.582000
+0.149701 0.193747 0.352019 0.520123 0.823974 1.434753 1.686592 1.961148 
2.370914 2.693067
+0.254818 0.412303 0.601514 0.771438 1.175450 1.376569 1.539029 1.937039 
2.408576 2.563621
+0.233713 0.355886 0.593725 0.762880 1.271479 1.563900 1.797523 2.094688 
2.538627 2.711734
+0.179028 0.237103 0.396818 1.042021 1.633539 1.762676 2.123935 2.322391 
2.588193 2.751345
+0.182027 0.251039 0.434581 0.714302 0.950997 1.437895 1.813570 1.969103 
2.145882 2.353968
+0.501538 0.692148 0.848860 1.071308 1.350543 1.489476 1.841643 2.104284 
2.341536 2.515294
+0.274530 0.381470 0.526682 0.922143 1.444946 1.573605 1.858767 2.066747 
2.284796 2.626819
+0.360617 0.583131 0.979491 1.254083 1.488351 1.797557 2.219518 2.482176 
2.742366 2.862025
+0.140913 0.220301 0.619552 0.818307 1.052429 1.339972 1.830726 2.133953 
2.536378 2.751128
+0.293514 0.391691 0.790080 0.962740 1.160319 1.526602 1.805491 2.041462 
2.361619 2.564962
+0.199542 0.290571 0.452891 0.689515 1.258530 1.409879 1.886242 2.228126 
2.465677 2.726646
+0.296920 0.356356 0.784287 0.996540 1.146175 1.623865 1.815498 2.038297 
2.600627 2.705700
+0.206451 0.276025 0.537547 0.802572 1.220407 1.642060 1.863625 2.001978 
2.215339 2.585384
+0.333650 0.464751 0.653772 0.966306 1.103865 1.340203 1.784701 1.914591 
2.470171 2.686916
+0.181861 0.244870 0.376456 0.554383 1.329897 1.810440 2.047836 2.202318 
2.660855 2.817057
+0.450565 0.647291 0.951172 1.229431 1.519644 1.686812 2.049107 2.267169 
2.501284 2.650596
+0.219996 0.320591 0.427747 0.601183 0.753448 0.929578 1.741979 2.285789 
2.472633 2.749566
+0.333848 0.423373 0.658791 1.031299 1.222625 1.365771 1.901889 2.121101 
2.290306 2.531185
+0.166064 0.233902 0.383355 0.661806 1.226567 1.399684 1.771269 1.974537 
2.173487 2.566344
+0.189286 0.243602 0.390584 1.387930 1.588719 1.763237 2.091118 2.316314 
2.593526 2.755080
+0.158404 0.224878 0.385000 0.668463 0.942954 1.411967 1.700313 1.828069 
2.059396 2.692546
+0.325989 0.461263 0.851471 1.045709 1.284028 1.516199 1.797341 2.088387 
2.437669 2.627215
+0.223709 0.289190 0.632812 0.858738 1.541903 1.746766 1.935738 2.184816 
2.404330 2.583013
+0.545842 0.952420 1.340820 1.516838 1.838879 2.012890 2.244968 2.403170 
2.592285 2.691119
+0.238526 0.349079 0.494582 0.987665 1.170746 1.348229 1.468645 2.296964 
2.644160 2.787381
+0.270857 0.442003 0.655998 0.881913 1.259254 1.428358 1.769867 1.998528 
2.395589 2.652840
+0.154384 0.211806 0.489481 0.997257 1.249817 1.541232 1.778865 1.949397 
2.319136 2.623391
+0.268258 0.312888 0.589114 1.258625 1.572705 1.675430 1.912780 2.070458 
2.279933 2.564230
+0.170715 0.224965 0.374011 0.540197 1.161887 1.499072 1.925865 2.082569 
2.246619 2.469724
+0.324358 0.391989 0.706816 0.833614 1.015725 1.568995 1.735976 2.127068 
2.558411 2.653871
+0.178059 0.258575 0.374125 0.536831 1.334827 1.798628 1.986978 2.189252 
2.432266 2.626696
+0.198857 0.420955 0.817664 1.178363 1.466742 1.821295 2.207327 2.474411 
2.738275 2.851185
+0.188344 0.324302 0.470468 0.790033 0.934101 1.188722 1.887171 2.052833 
2.448325 2.630236
+0.201295 0.365646 0.526513 0.758388 1.140096 1.267331 1.650173 1.879342 
2.102889 2.600286
+0.135058 0.169428 0.307348 0.503160 1.018083 1.447946 1.810984 2.134002 
2.480277 2.759846
+0.178006 0.266610 0.390327 0.928681 1.501613 1.621327 1.871356 2.025864 
2.580442 2.770801
+0.246182 0.424290 0.644023 0.801168 1.114876 1.277757 1.503317 2.074888 
2.295695 2.501380
+0.322996 0.430355 0.631600 1.047698 1.221840 1.426726 1.903081 2.032223 
2.516726 2.708452
+0.292994 0.430599 0.619178 0.794567 1.283029 1.652817 1.840836 2.069946 
2.385375 2.528246
+0.525494 0.787797 1.121816 1.387482 1.674574 1.936221 2.224042 2.390624 
2.634276 2.743234
+0.299504 0.409196 0.602235 0.892336 1.056426 1.253766 1.489136 1.639876 
2.427480 2.650368
+0.423758 0.520480 0.758987 1.041257 1.173655 1.423676 1.818235 1.936407 
2.363001 2.626644
+0.155042 0.247496 0.641445 0.954509 1.224970 1.465850 1.837841 2.090456 
2.451501 2.716155
+0.251949 0.421094 0.706797 0.975659 1.259906 1.520067 1.816310 2.122017 
2.474913 2.716671
+0.215220 0.302248 0.730598 0.896343 1.145567 1.370192 1.700685 2.022563 
2.283265 2.489220
+0.285230 0.453559 0.663670 0.861526 1.011602 1.247419 1.655985 1.861291 
2.578936 2.731333
+0.162067 0.219409 0.373433 0.544669 1.103298 1.597178 1.921040 2.143402 
2.406499 2.660484
+0.342367 0.511499 0.931350 1.163219 1.393645 1.611146 1.972769 2.194416 
2.470766 2.649264
+0.251010 0.364125 0.560956 0.746545 1.019837 1.170725 1.532945 2.288671 
2.577088 2.723074
+0.315001 0.489412 0.720682 0.877607 1.090466 1.253848 1.448221 1.922954 
2.255887 2.408634
+0.174666 0.235793 0.387644 0.554402 1.231089 1.456137 1.688034 2.127450 
2.367035 2.597270
+0.215113 0.341915 1.043717 1.322751 1.495414 1.741895 1.961164 2.239824 
2.544905 2.703945
+0.219852 0.301770 0.513912 0.705474 0.877540 1.295896 1.699002 1.987057 
2.287968 2.496966
+0.290638 0.366442 0.655155 1.044990 1.172154 1.532536 1.800791 1.948931 
2.509679 2.660055
+0.232252 0.313770 0.658552 0.941977 1.463174 1.665488 1.862461 2.027843 
2.534016 2.701236
+0.326539 0.552681 1.121731 1.331381 1.520072 1.867084 2.082861 2.332474 
2.606039 2.737092
+0.190254 0.340428 0.492777 0.739738 0.895461 1.079371 1.643156 1.795290 
2.491822 2.729382
+0.283586 0.418440 0.587306 0.870866 1.418553 1.577030 1.799498 2.069398 
2.274484 2.438103
+0.235752 0.357650 0.502891 1.012434 1.258853 1.407789 1.820057 1.955830 
2.505903 2.734330
+0.278412 0.343137 0.849977 1.232895 1.350504 1.590626 1.787519 2.091578 
2.541360 2.663856
+0.162966 0.243159 0.439238 0.684821 0.887783 1.462899 1.881739 2.044253 
2.289393 2.705002
+0.235063 0.371799 0.578210 0.752199 1.008546 1.476284 1.804912 2.271399 
2.655042 2.789653
+0.154939 0.223696 0.344718 0.667555 1.495659 1.669436 2.069883 2.307215 
2.627692 2.811343
+0.239702 0.335917 0.716616 1.131805 1.452514 1.639133 2.105515 2.279822 
2.502030 2.669220
+0.226818 0.331261 0.472705 0.651974 0.781639 1.219798 1.822904 2.082732 
2.439327 2.610900
+0.223413 0.359594 0.534704 0.741518 1.225894 1.389874 1.618191 2.009911 
2.207000 2.459844
+0.171308 0.268378 0.383799 0.858926 1.376293 1.519165 1.780601 1.922915 
2.623094 2.802402
+0.140134 0.212320 0.443224 0.967457 1.264241 1.562153 1.929148 2.217388 
2.668341 2.830751
+0.221323 0.322124 0.485563 0.818589 1.011837 1.198984 1.423616 1.669403 
2.157523 2.363190
+0.369687 0.525655 0.719213 0.939654 1.137631 1.312217 1.599935 1.826813 
2.355221 2.580680
+0.211975 0.314411 0.489148 0.739213 1.377801 1.554504 1.824373 2.158875 
2.352992 2.722621
+0.170698 0.296368 0.934285 1.243133 1.555900 1.866544 2.159940 2.363436 
2.585032 2.738530
+0.189263 0.305887 0.439912 0.784610 1.227264 1.342508 1.587650 1.754907 
2.439893 2.721315
+0.296339 0.385169 0.612012 1.081322 1.276361 1.437178 1.871470 2.001718 
2.339094 2.640217
+0.229588 0.320544 0.517278 0.969137 1.142560 1.626089 1.877916 2.115461 
2.546741 2.708025
+0.248869 0.420193 0.732388 1.049015 1.303410 1.601458 1.949210 2.239464 
2.648223 2.822614
+0.207600 0.292320 0.496539 0.857149 1.182294 1.399849 1.714165 1.868238 
2.027936 2.200737
+0.225558 0.396897 0.541783 0.873366 1.178972 1.299579 1.677191 1.849602 
2.330475 2.752717
+0.176821 0.231377 0.372767 0.508565 1.152819 1.808050 2.112679 2.250073 
2.571342 2.748550
+0.352149 0.515765 1.023238 1.260221 1.443565 1.622067 1.872804 2.100177 
2.489280 2.671043
+0.166138 0.263444 0.370151 0.590066 0.754819 0.940533 1.761870 1.946611 
2.445015 2.758191
+0.342082 0.476411 0.656223 0.851774 1.003992 1.153372 1.694401 2.065625 
2.255642 2.440148
+0.227237 0.376514 0.514329 0.894887 1.141673 1.283052 1.831377 1.985902 
2.334470 2.784878
+0.215891 0.269548 0.684111 1.405658 1.674813 1.800925 2.172085 2.339395 
2.591569 2.730100
+0.236240 0.400377 0.533684 0.750343 0.910405 1.089112 1.737729 1.912807 
2.192519 2.688733
+0.169242 0.284879 0.916252 1.169769 1.433683 1.644376 1.919124 2.161625 
2.482664 2.682591
+0.270731 0.336506 0.477594 1.042714 1.605840 1.796859 1.945909 2.160039 
2.354913 2.520950
+0.420586 0.652563 1.117162 1.406006 1.747537 1.947424 2.203094 2.359970 
2.547902 2.682168
+0.281552 0.395037 0.640181 0.944531 1.193959 1.330492 1.718657 2.188389 
2.444591 2.578673
+0.311824 0.476892 0.633431 0.845825 1.332518 1.491656 1.693614 2.041082 
2.289317 2.439399
+0.133945 0.200790 0.647237 0.927687 1.188883 1.369658 1.699557 1.972777 
2.295259 2.678185
+0.204796 0.278215 0.443465 1.270484 1.405209 1.640920 1.824252 2.327085 
2.599637 2.772533
+0.183970 0.244116 0.410594 0.639103 1.221589 1.404867 1.628358 1.902439 
2.168632 2.306804
+0.343622 0.434735 0.666599 0.868069 1.048942 1.532778 1.819835 1.971884 
2.288701 2.448745
+0.238017 0.320361 0.657255 0.917611 1.303306 1.727361 1.988909 2.181455 
2.442965 2.613322
+0.323613 0.545056 0.930173 1.226059 1.440181 1.772300 2.056890 2.347811 
2.689382 2.820616
+0.288930 0.401387 0.617124 0.836453 0.990306 1.261227 1.913283 2.110049 
2.324584 2.557162
+0.332670 0.480804 0.656147 0.880536 1.029566 1.230493 1.769063 1.932296 
2.200370 2.585210
+0.185551 0.265352 0.409432 0.608847 1.034698 1.222821 1.876965 2.171647 
2.403502 2.666441
+0.155026 0.223348 0.401684 1.079141 1.415789 1.620021 2.045515 2.258512 
2.631625 2.802291
+0.183461 0.263081 0.425694 0.635685 1.188664 1.357556 1.574991 2.085982 
2.288725 2.511108
+0.314738 0.463011 0.648733 0.877651 1.002890 1.265811 2.005414 2.198095 
2.481535 2.714178
+0.244411 0.318444 0.546578 0.793615 1.326150 1.735479 1.945598 2.114662 
2.315350 2.478535
+0.326237 0.543540 0.987361 1.304413 1.684932 1.902147 2.207172 2.374273 
2.557527 2.716216
+0.157795 0.283302 0.430398 0.660379 0.811060 1.142539 1.479298 1.718714 
2.670264 2.847556
+0.220856 0.283872 0.779935 1.074940 1.312211 1.626329 1.837609 1.968885 
2.155988 2.602381
+0.140763 0.205719 0.406561 0.762459 1.041266 1.486993 1.838306 2.114606 
2.552810 2.772285
+0.140451 0.395920 0.792110 1.108001 1.402642 1.623079 1.943151 2.227952 
2.546163 2.773998
+0.229862 0.336462 0.546590 0.810150 1.201906 1.346787 1.825323 2.092925 
2.285730 2.473359
+0.224913 0.328246 0.517269 0.874793 1.012587 1.452178 1.695778 2.014930 
2.511447 2.672574
+0.247745 0.335741 0.546558 0.710177 1.170556 1.727789 1.970678 2.158532 
2.482819 2.628913
+0.398252 0.555087 0.890367 1.121205 1.381533 1.601228 1.866647 2.066612 
2.405164 2.588016
+0.198563 0.288867 0.478054 0.658477 0.851841 1.027105 1.539739 2.021106 
2.579462 2.784184
+0.304271 0.371642 0.661590 1.068976 1.224249 1.411927 1.680524 1.869770 
2.100073 2.308554
+0.188223 0.257939 0.432402 0.735050 1.318038 1.485528 1.828110 2.046435 
2.307018 2.457237
+0.246723 0.297276 0.604475 1.310901 1.570442 1.688851 1.913658 2.051334 
2.556011 2.714965
+0.158309 0.234509 0.435792 0.667900 0.957567 1.235918 1.592945 1.818158 
2.307389 2.768973
+0.419843 0.501412 0.766892 1.073173 1.189374 1.480225 1.766597 1.922151 
2.537937 2.694771
+0.275140 0.335563 0.678421 1.081521 1.592379 1.772635 1.931245 2.140699 
2.333804 2.490857
+0.372056 0.856814 1.239538 1.409989 1.690297 1.863018 2.072702 2.273547 
2.532657 2.690517
+0.321254 0.422981 0.604856 0.793437 0.912112 1.128454 1.795979 2.173232 
2.360146 2.536137
+0.395214 0.598779 0.771997 0.946713 1.213777 1.330433 1.660335 1.977154 
2.165056 2.344018
+0.225286 0.317828 0.464801 1.112329 1.369512 1.511999 1.921954 2.053407 
2.593519 2.777285
+0.330612 0.407807 0.730129 1.259731 1.459811 1.605671 1.981307 2.137009 
2.465971 2.679722
+0.213145 0.305305 0.507016 0.662299 1.056848 1.479862 1.671904 2.102707 
2.369871 2.581994
+0.219658 0.296096 0.443507 0.610973 0.799691 1.676579 1.965487 2.153235 
2.502228 2.692999
+0.174947 0.257739 0.373547 0.552567 1.405316 1.614249 1.848917 2.117795 
2.317884 2.711904
+0.209667 0.297529 0.756195 1.095304 1.564196 1.844775 2.103697 2.292657 
2.520051 2.679489
+0.170138 0.240310 0.452247 0.684414 0.880102 1.366921 1.741648 2.131295 
2.505730 2.732611
+0.278164 0.468635 0.707518 0.853693 1.054780 1.210458 1.540941 2.174562 
2.410662 2.612138
+0.155738 0.238890 0.352836 0.621012 1.441438 1.619698 1.825165 1.975331 
2.525373 2.748574
+0.223776 0.274424 0.479048 0.797871 1.694190 1.878135 2.135285 2.373726 
2.595422 2.729787
+0.151088 0.198286 0.326558 0.536276 0.845893 1.141653 1.460565 1.762868 
2.025851 2.177303
+0.434445 0.614208 0.887657 1.028446 1.191359 1.392204 1.786886 2.062481 
2.423405 2.619356
+0.180755 0.275311 0.397787 0.859366 1.409762 1.523325 1.908846 2.082319 
2.389720 2.743887
+0.275975 0.508416 0.889894 1.318925 1.633314 1.904728 2.169012 2.374655 
2.726973 2.847666
+0.156239 0.262624 0.406657 0.739074 1.044495 1.201234 1.810887 2.005600 
2.581700 2.804889
+0.195391 0.258771 0.654924 0.824371 1.315259 1.500728 1.765938 2.063992 
2.341176 2.513659
+0.178034 0.301047 0.463020 0.716172 1.198868 1.340454 1.834558 2.022132 
2.400750 2.776294
+0.340368 0.404236 0.843747 1.039238 1.202107 1.708051 1.914952 2.169509 
2.521521 2.623348
+0.218465 0.289694 0.528045 0.817051 1.132337 1.580464 1.838891 1.983392 
2.147493 2.348131
+0.322509 0.458058 0.654679 0.958976 1.118211 1.321565 1.901390 2.046409 
2.360931 2.664215
+0.191821 0.252321 0.389176 0.581111 1.529667 1.931689 2.083614 2.270465 
2.566855 2.713879
+0.493961 0.710827 0.982260 1.196274 1.419327 1.620910 1.928015 2.145652 
2.429769 2.601973
+0.213148 0.311589 0.424636 0.602664 0.736895 1.022165 1.992278 2.218533 
2.611628 2.850324
+0.288129 0.434441 0.629313 0.856153 1.289667 1.424520 1.875795 2.150240 
2.351814 2.536843
+0.160031 0.230716 0.406654 0.870424 1.156517 1.392317 1.804098 1.951437 
2.210479 2.735164
+0.229340 0.293962 0.503222 1.242097 1.475824 1.624647 1.998680 2.144499 
2.578549 2.753270
+0.158770 0.220035 0.363386 0.577761 0.963090 1.174939 1.738169 1.979202 
2.162436 2.661916
+0.346062 0.444816 0.716985 1.180717 1.370580 1.522996 1.892173 2.066682 
2.395796 2.627659
+0.307495 0.389330 0.612607 0.969283 1.557708 1.839939 1.996737 2.172382 
2.420627 2.539195
+0.437804 0.726957 1.291168 1.503297 1.765428 1.962121 2.163647 2.336227 
2.579616 2.708524
+0.232184 0.333678 0.528368 0.706749 1.203280 1.379018 1.611161 2.154678 
2.592903 2.750319
+0.272652 0.461710 0.625777 0.839609 1.342021 1.496726 1.715376 2.137572 
2.370040 2.597390
+0.184908 0.302324 0.454883 0.880307 1.104383 1.292526 1.777203 1.943364 
2.444174 2.622726
+0.265644 0.341261 0.553228 1.139475 1.427148 1.560441 1.933941 2.084129 
2.393307 2.654135
+0.167920 0.207301 0.370331 0.525538 1.030891 1.368163 1.782474 2.062404 
2.332762 2.526299
+0.343172 0.433912 0.717501 0.889734 1.052060 1.695278 2.053156 2.208456 
2.608869 2.718320
+0.216527 0.305247 0.445890 0.729271 1.639736 1.903284 2.053351 2.221254 
2.432253 2.568018
+0.110545 0.209955 0.844788 1.174205 1.492201 1.810243 2.177274 2.440496 
2.697294 2.835232
+0.217384 0.337412 0.488999 0.761842 0.879715 1.209528 1.970747 2.120795 
2.611654 2.791762
+0.190459 0.296484 0.469967 0.800649 1.105561 1.278527 1.516938 1.693066 
2.114420 2.716739
+0.134814 0.175978 0.300425 0.496817 1.244295 1.485308 1.861721 2.131233 
2.485046 2.773884
+0.210174 0.278266 0.435508 0.927538 1.606908 1.753898 1.957554 2.166283 
2.398518 2.749609
+0.213766 0.315300 0.509924 0.709930 0.964724 1.106776 1.382615 2.001070 
2.323214 2.565314
+0.400615 0.524954 0.798552 1.012852 1.135488 1.474850 1.989029 2.130909 
2.507971 2.679460
+0.249400 0.377023 0.519635 0.754227 1.459559 1.642762 1.828961 2.077882 
2.298228 2.467534
+0.473365 0.683973 1.052341 1.375830 1.548106 1.747589 2.139299 2.318768 
2.609977 2.739255
+0.203877 0.341791 0.485180 0.884069 1.097592 1.269532 1.479924 1.757879 
2.648399 2.822387
+0.273046 0.404254 0.555403 0.954547 1.291233 1.399022 1.722890 1.903441 
2.171984 2.645312
+0.040369 0.117266 0.617136 0.892043 1.260331 1.541653 1.859383 2.153096 
2.498232 2.761886
+0.132414 0.211358 0.742445 1.066857 1.331084 1.570793 1.867458 2.132535 
2.479624 2.731076
+0.237329 0.326529 0.612538 0.790663 0.990133 1.413736 1.738235 1.936914 
2.167728 2.451626
+0.273960 0.405794 0.572530 0.933672 1.057816 1.397952 1.856531 1.997548 
2.599486 2.760042
+0.199334 0.298380 0.442931 0.628638 1.303213 1.640138 1.804023 2.113020 
2.375455 2.548946
+0.350188 0.502010 0.821298 1.038639 1.369294 1.592404 1.910815 2.156486 
2.460508 2.653260
+0.281558 0.399892 0.573105 0.753299 0.900613 1.054574 1.581987 2.178437 
2.430354 2.616044
+0.344653 0.543532 0.703715 0.862285 1.198215 1.338208 1.579080 2.060769 
2.306749 2.485749
+0.220701 0.326795 0.520618 0.755133 1.295552 1.451886 1.690502 2.200045 
2.414271 2.615909
+0.279478 0.332193 0.801527 1.345966 1.487477 1.678499 1.922202 2.100025 
2.585571 2.713387
+0.163502 0.212169 0.365096 0.525464 0.869846 1.208807 1.793988 2.040314 
2.297180 2.469797
+0.285531 0.341488 0.754059 1.170016 1.300835 1.513696 1.699861 1.889918 
2.581459 2.706874
+0.249595 0.366997 0.626427 0.945219 1.407043 1.560558 1.831657 2.231149 
2.466354 2.654518
+0.271671 0.443136 1.156412 1.406456 1.676521 1.856481 2.063218 2.230498 
2.475840 2.639575
+0.286620 0.427806 0.637320 0.803409 0.996161 1.266383 1.681751 2.003968 
2.394651 2.588547
+0.314906 0.440519 0.612129 0.896126 1.472415 1.717693 1.881351 2.099437 
2.369166 2.495466
+0.170277 0.251270 0.405477 0.915641 1.126887 1.436630 1.714771 1.893198 
2.552995 2.738519
+0.279410 0.337137 0.734563 1.281046 1.480602 1.611880 1.853215 1.994883 
2.416054 2.654827
+0.165776 0.226083 0.417544 0.744574 1.044468 1.534891 1.808494 1.944946 
2.138491 2.601790
+0.264579 0.336652 0.542033 0.710190 0.913338 1.655751 1.817762 2.231956 
2.524436 2.658519
+0.158194 0.235588 0.338347 0.541657 1.583377 1.766293 2.009135 2.243336 
2.503941 2.775158
+0.332612 0.509620 0.822935 1.075876 1.454286 1.650788 1.974450 2.251279 
2.537342 2.745115
+0.262817 0.359709 0.520893 0.707667 0.818364 1.438849 1.971249 2.087666 
2.497014 2.646442
+0.233200 0.399599 0.612456 0.775547 1.199192 1.355765 1.646901 2.136245 
2.342490 2.695742
+0.149687 0.238538 0.372248 0.634520 1.255813 1.433790 1.770041 1.928752 
2.611905 2.824930
+0.137016 0.210297 0.591489 1.125451 1.375648 1.685296 2.089612 2.390888 
2.704458 2.844434
+0.213490 0.341024 0.541716 0.750061 1.088199 1.244576 1.555338 1.965568 
2.187900 2.383714
+0.300159 0.489291 0.825022 1.037100 1.194088 1.347375 1.684747 2.024936 
2.465611 2.740973
+0.170029 0.255033 0.392758 0.727117 1.382065 1.579676 1.800912 1.959072 
2.282335 2.728796
+0.175883 0.365509 1.112175 1.385866 1.720391 1.977810 2.245295 2.421614 
2.629567 2.754004
+0.162590 0.248164 0.454630 0.763209 0.966031 1.282338 1.730743 1.938052 
2.479376 2.667563
+0.258043 0.345866 0.556520 0.981312 1.361528 1.482377 1.872244 2.158226 
2.362269 2.555030
+0.234139 0.348843 0.528234 0.987884 1.195217 1.422145 1.960028 2.127365 
2.603321 2.793004
+0.179699 0.559209 0.867682 1.088835 1.316888 1.571498 1.922198 2.197391 
2.501118 2.728679
+0.216784 0.310791 0.487492 0.932903 1.201954 1.366554 1.800398 1.977499 
2.174265 2.537065
+0.186878 0.400655 0.580952 0.846287 1.103872 1.266778 1.842772 2.019592 
2.488005 2.717222
+0.164641 0.248712 0.389358 0.772822 1.212561 1.369916 2.025869 2.277615 
2.617524 2.809527
+0.351899 0.520326 0.926597 1.219651 1.509839 1.676837 1.921744 2.111253 
2.356380 2.545934
+0.242182 0.365285 0.506156 0.716020 0.865221 1.011688 1.786917 2.122981 
2.350877 2.767729
+0.413776 0.559566 0.735800 0.928997 1.079117 1.267179 1.880069 2.152492 
2.324834 2.539856
+0.210597 0.329568 0.469735 0.788590 1.215495 1.319810 1.711456 2.058991 
2.245438 2.653727
+0.197937 0.254148 0.477985 1.227090 1.629920 1.767432 2.186975 2.385104 
2.594869 2.725544
+0.205489 0.333855 0.523915 0.706275 1.102152 1.246608 1.648901 2.026835 
2.281695 2.759313
+0.230328 0.322431 0.861834 1.145614 1.347211 1.576111 1.807275 2.004824 
2.354365 2.572251
+0.224898 0.282022 0.506636 1.152298 1.626560 1.752095 2.028178 2.218821 
2.488955 2.670460
+0.313732 0.625469 1.164472 1.499077 1.749612 2.018528 2.262230 2.429601 
2.692165 2.822502
+0.375623 0.575307 0.791200 0.935770 1.096937 1.343393 1.807992 2.187306 
2.519720 2.694803
+0.236981 0.332412 0.479270 0.844461 1.347641 1.490733 1.683942 2.039143 
2.297619 2.458431
+0.129047 0.206250 0.636751 0.865101 1.136893 1.356610 1.704798 1.916685 
2.518358 2.756320
+0.195171 0.266517 0.414793 1.239561 1.452906 1.608357 1.833045 2.047802 
2.473522 2.621994
+0.165853 0.212720 0.372757 0.536136 1.013938 1.339627 1.555122 1.945745 
2.236281 2.440949
+0.256981 0.368868 0.635878 0.802543 1.084757 1.439120 1.814729 2.120519 
2.458154 2.621456
+0.214382 0.297135 0.445091 0.702050 1.365102 1.851262 2.067026 2.207298 
2.470728 2.612432
+0.340710 0.532103 0.935278 1.171022 1.377886 1.638598 1.965274 2.246164 
2.631266 2.806341
+0.310524 0.412051 0.582478 0.768755 0.871594 1.119854 1.926346 2.207508 
2.407091 2.636633
+0.249349 0.443517 0.631532 0.810096 1.205129 1.357206 1.607396 1.984157 
2.208016 2.645111
+0.143090 0.185312 0.325214 0.504000 1.134467 1.327913 1.673654 2.006903 
2.389284 2.746094
+0.226575 0.298946 0.453938 0.998061 1.394600 1.597283 2.064183 2.223246 
2.425469 2.569458
+0.183924 0.255181 0.415834 0.624247 1.042338 1.203077 1.555240 2.125309 
2.400352 2.661916
+0.275610 0.365968 0.654909 0.990108 1.170799 1.455333 2.077561 2.252672 
2.502315 2.685945
+0.204334 0.287844 0.394810 0.761295 1.501200 1.784709 1.935569 2.152830 
2.349263 2.545639
+0.342976 0.527539 0.917466 1.160585 1.499531 1.761830 2.095272 2.301872 
2.540570 2.694692
+0.202374 0.333367 0.480179 0.708677 0.819505 1.105285 1.806641 1.953348 
2.610844 2.797497
+0.307033 0.368471 0.602486 1.108611 1.413347 1.528636 1.798519 1.986138 
2.169052 2.437256
+0.144073 0.196932 0.386988 0.819061 1.289767 1.625073 1.901924 2.136105 
2.483019 2.707970
+0.176760 0.268627 0.662082 1.056866 1.547973 1.711386 1.972939 2.249909 
2.544471 2.761094
+0.191409 0.292985 0.492193 0.800526 1.041836 1.278546 1.836626 2.028677 
2.249387 2.627785
+0.324102 0.399146 0.687435 0.868704 1.022957 1.582084 1.853847 1.981885 
2.554914 2.677057
+0.229172 0.302836 0.481418 0.704363 0.967567 1.828269 2.097295 2.258467 
2.549112 2.704652
+0.467124 0.696788 0.939500 1.094987 1.277543 1.488496 1.896279 2.158470 
2.474182 2.659994
+0.175418 0.234039 0.367674 0.513586 0.747619 1.008405 1.583161 2.053114 
2.363292 2.681153
+0.410273 0.561949 0.736215 0.956685 1.135688 1.288424 1.750612 1.937714 
2.151318 2.489336
+0.204541 0.277613 0.529607 0.722971 1.199975 1.447336 1.715634 1.921054 
2.357781 2.507488
+0.253116 0.311907 0.696982 1.320082 1.575418 1.705324 2.005068 2.168666 
2.461879 2.665053
+0.163657 0.237902 0.393374 0.609490 0.854272 1.089980 1.526387 1.842337 
2.126252 2.679051
+0.448627 0.530664 0.812719 1.095201 1.207641 1.575411 1.884209 2.034297 
2.553007 2.688355
+0.262717 0.338748 0.512685 1.003543 1.480178 1.622083 1.828518 2.142415 
2.356457 2.511530
+0.417111 0.636688 1.036571 1.319877 1.679924 1.873389 2.073722 2.249396 
2.507732 2.651054
+0.263698 0.461151 0.618737 0.830471 1.004041 1.158874 1.801566 2.020222 
2.306558 2.743041
+0.387779 0.575108 0.729791 0.932981 1.361163 1.505161 1.751183 2.068466 
2.338260 2.487637
+0.181510 0.265666 0.454631 1.082382 1.287303 1.579202 1.851178 2.096963 
2.467237 2.646930
+0.277668 0.345119 0.602341 1.179200 1.378990 1.545625 1.813861 1.962590 
2.491799 2.664453
+0.179320 0.248080 0.456925 0.722589 1.126932 1.579450 1.799397 1.950668 
2.484125 2.707238
+0.314322 0.381145 0.608651 0.727613 0.890472 1.610280 2.136172 2.258358 
2.596376 2.709780
+0.189539 0.266068 0.419729 0.651693 1.410161 1.643106 1.854810 2.275582 
2.492054 2.722009
+0.254466 0.313038 0.594149 1.012536 1.688813 1.935465 2.119184 2.287869 
2.535543 2.667926
+0.134691 0.171906 0.302740 0.492936 0.899551 1.229188 1.733940 2.012878 
2.446339 2.742762
+0.231556 0.365068 0.680761 0.889142 1.111338 1.295904 1.542636 1.971784 
2.427562 2.631912
+0.222525 0.305606 0.527193 0.687519 1.181381 1.671764 1.863683 2.072023 
2.634517 2.779272
+0.178770 0.237415 0.375160 0.856692 1.673680 1.813743 2.016791 2.272421 
2.522601 2.735959
+0.193532 0.268731 0.451328 0.753471 0.984854 1.285349 1.685647 1.884123 
2.091677 2.243418
+0.476037 0.651610 0.801054 1.010162 1.241374 1.355840 1.775976 2.086152 
2.272907 2.454351
+0.211657 0.308331 0.421366 0.865966 1.418774 1.556743 1.786149 2.020332 
2.198585 2.631981
+0.203789 0.490794 1.010137 1.275006 1.472213 1.810140 2.170639 2.437660 
2.662122 2.788061
+0.174355 0.252095 0.674715 0.842194 1.055087 1.278000 1.698680 2.070561 
2.399385 2.657430
+0.245109 0.324049 0.628822 0.927910 1.123601 1.580066 1.878640 2.054601 
2.358721 2.546838
+0.182644 0.253804 0.386248 0.614056 1.364821 1.545877 2.040174 2.218827 
2.419010 2.624609
+0.295605 0.367794 0.690701 1.055162 1.186600 1.644453 1.944154 2.101444 
2.562120 2.691268
+0.220878 0.289573 0.640307 0.822072 1.144055 1.567797 1.766410 1.908109 
2.103459 2.560489
+0.403453 0.526298 0.732204 0.901150 1.035869 1.339383 1.783990 1.941961 
2.371032 2.626653
+0.212825 0.258570 0.471588 0.685549 1.263740 1.821051 2.163822 2.288398 
2.628063 2.788155
+0.401181 0.642053 1.032473 1.236110 1.444450 1.686678 2.006722 2.228515 
2.572112 2.723964
+0.239433 0.341091 0.492629 0.707630 0.881426 1.030816 1.719255 2.344056 
2.579063 2.756942
+0.294093 0.382770 0.577412 1.009281 1.313036 1.419303 1.744673 2.094230 
2.289039 2.475843
+0.169805 0.236922 0.403314 0.638995 1.176446 1.352145 1.665573 1.909756 
2.150120 2.716243
+0.210447 0.277913 0.452474 1.402686 1.513430 1.720944 1.903938 2.278499 
2.583756 2.743179
+0.159574 0.225382 0.374008 0.714137 1.011253 1.371713 1.699162 1.871587 
2.027056 2.491194
+0.258602 0.557253 0.819720 1.038856 1.301470 1.445358 1.830613 2.098171 
2.320809 2.541075
+0.232756 0.282242 0.631974 0.898694 1.537444 1.869217 2.063967 2.234463 
2.498226 2.633517
+0.580133 0.997946 1.320956 1.481874 1.731605 1.898579 2.120712 2.290128 
2.530088 2.651657
+0.211840 0.307093 0.453360 0.945579 1.250815 1.490290 1.724135 2.281097 
2.562699 2.752602
+0.314276 0.493555 0.667782 0.896500 1.323006 1.482618 1.667487 1.974415 
2.427345 2.555679
+0.182455 0.261592 0.418011 1.050927 1.261387 1.443370 1.665467 1.939030 
2.444695 2.638451
+0.241570 0.306934 0.491293 1.105950 1.554827 1.666520 1.923917 2.087652 
2.367600 2.654889
+0.190084 0.254850 0.454062 0.724519 1.083362 1.393887 1.892335 2.088856 
2.321764 2.484299
+0.306497 0.389831 0.721793 0.839714 1.124754 1.652401 1.822919 2.273310 
2.569195 2.669599
+0.186200 0.273460 0.383201 0.564758 1.511073 1.845018 1.998284 2.194096 
2.388693 2.587923
+0.300722 0.478218 0.823364 1.127490 1.591141 1.871349 2.174720 2.403181 
2.624785 2.782405
+0.228884 0.358342 0.504622 0.795874 1.005622 1.152613 1.908053 2.124794 
2.372473 2.797584
+0.171885 0.248234 0.432842 0.833143 1.040892 1.269289 1.661635 1.918629 
2.158962 2.653403
+0.140943 0.193684 0.343025 0.562303 1.069552 1.543330 1.824473 1.961637 
2.463513 2.770537
+0.173053 0.245656 0.360656 0.960618 1.589535 1.689906 1.984141 2.142998 
2.588389 2.759403
+0.240180 0.429951 0.637440 0.786596 1.069147 1.226573 1.470883 1.952052 
2.195064 2.615973
+0.367862 0.471897 0.730834 1.082320 1.226293 1.462927 1.928169 2.052466 
2.406737 2.662458
+0.247175 0.358209 0.535946 0.781876 1.363697 1.635239 1.807233 1.993776 
2.452769 2.601039
+0.445578 0.687898 1.114108 1.301027 1.577397 1.886042 2.224903 2.436534 
2.659695 2.761031
+0.214389 0.336025 0.487794 0.759534 0.970518 1.141100 1.457335 1.624644 
2.306922 2.715265
+0.377300 0.466775 0.716121 1.083781 1.256543 1.411238 1.789433 1.936372 
2.205572 2.562355
+0.148362 0.214593 0.545023 0.840437 1.193325 1.480659 1.791868 2.083419 
2.410537 2.676129
+0.150403 0.278398 0.792676 0.976680 1.218845 1.405245 1.775056 2.162458 
2.547861 2.746383
+0.236301 0.328633 0.630867 0.839915 1.042349 1.298870 1.627752 1.839491 
2.298928 2.493962
+0.337889 0.497920 0.711277 0.850420 0.992027 1.246884 1.710746 2.086682 
2.527158 2.707162
+0.172215 0.236540 0.372897 0.525146 1.182577 1.735727 1.927035 2.114619 
2.319170 2.542782
+0.415304 0.624807 0.906616 1.117841 1.446155 1.669417 1.948413 2.172815 
2.504530 2.670754
+0.265417 0.407241 0.613894 0.816534 0.980063 1.156061 1.756747 2.274851 
2.497193 2.712242
+0.276440 0.468209 0.649518 0.816686 1.195171 1.355517 1.549226 1.935272 
2.217871 2.426979
+0.188925 0.277012 0.412665 0.672627 1.354807 1.514523 1.699988 2.144554 
2.382186 2.586077
+0.242630 0.352485 0.912974 1.343781 1.604428 1.801867 2.014791 2.193072 
2.460809 2.631999
+0.190903 0.285841 0.449070 0.760328 0.954285 1.182936 1.692638 1.878163 
2.276840 2.465963
+0.220659 0.300374 0.721694 0.947306 1.298330 1.562980 1.760618 1.888247 
2.506445 2.689675
+0.213168 0.290928 0.695227 0.918179 1.378186 1.631987 1.847886 2.003072 
2.358358 2.619347
+0.328586 0.517244 0.937320 1.376238 1.574840 1.764347 2.058630 2.224334 
2.584444 2.756653
+0.248486 0.367007 0.562147 0.750632 0.902785 1.147563 1.637415 1.912062 
2.413993 2.605696
+0.310691 0.477895 0.670796 0.940507 1.418293 1.563497 1.805141 2.114076 
2.376358 2.535155
+0.256555 0.414210 0.559427 0.981289 1.191646 1.378307 1.678398 1.849306 
2.576704 2.756630
+0.291424 0.335003 0.750149 1.289655 1.437209 1.599989 1.803177 1.967415 
2.601748 2.733761
+0.195254 0.279513 0.451755 0.649111 0.828694 1.609509 1.914906 2.091219 
2.319589 2.534899
+0.222304 0.332624 0.475678 0.685205 1.030332 1.737223 1.920979 2.378290 
2.706719 2.817726
+0.164833 0.240093 0.359862 0.801929 1.513677 1.641713 2.040524 2.248843 
2.488659 2.714025
+0.214777 0.287322 0.572644 1.145070 1.367112 1.752687 2.042424 2.222067 
2.543047 2.697885
+0.226099 0.330382 0.474439 0.687757 0.799187 1.319837 1.944566 2.078099 
2.367800 2.508460
+0.244540 0.392163 0.553692 0.729765 1.247865 1.448376 1.617590 2.074636 
2.340052 2.518064
+0.175381 0.314231 0.446023 0.797404 1.328458 1.439727 1.793346 1.939571 
2.468800 2.721651
+0.205808 0.293670 0.452447 1.074268 1.288235 1.655635 1.857504 2.364687 
2.639812 2.798144
+0.253926 0.392653 0.587584 0.800134 0.976310 1.185587 1.570687 1.821414 
2.090893 2.349021
+0.322461 0.410912 0.723569 1.060644 1.201524 1.400360 1.579189 1.788759 
2.460242 2.616602
+0.211266 0.304981 0.436011 0.771978 1.490623 1.677748 1.886227 2.113497 
2.326353 2.727265
+0.235012 0.406911 0.864785 1.291485 1.708295 1.938554 2.179896 2.352404 
2.563792 2.711446
+0.176814 0.268620 0.445837 0.823113 1.029776 1.271571 1.623388 1.811215 
2.402140 2.614165
+0.241865 0.339268 0.507509 1.003677 1.204347 1.372561 1.940795 2.101371 
2.385606 2.669975
+0.230878 0.334743 0.500370 0.879929 1.021894 1.533770 1.970789 2.128971 
2.567262 2.717288
+0.297505 0.451574 0.748848 0.988527 1.366237 1.606668 1.894660 2.174481 
2.521427 2.759168
+0.199265 0.271145 0.498160 0.854679 1.172103 1.364148 1.762079 1.969095 
2.173538 2.311630
+0.222173 0.424864 0.564942 0.829809 1.038172 1.194055 1.720601 1.858086 
2.431760 2.741461
+0.181961 0.226819 0.390513 0.556339 1.056596 1.553065 2.128349 2.258018 
2.602497 2.802121
+0.357600 0.565047 1.153012 1.350312 1.533576 1.718542 1.957892 2.175347 
2.505650 2.678495
+0.162257 0.236808 0.374039 0.570569 0.748034 1.172262 1.823392 2.053032 
2.513769 2.772072
+0.305794 0.465870 0.645121 0.882650 1.141294 1.266856 1.701581 2.002881 
2.184124 2.411254
+0.231652 0.380738 0.549642 0.837410 1.225266 1.332971 1.851582 2.119371 
2.315077 2.732108
+0.235449 0.286771 0.684809 1.346663 1.526630 1.703476 2.101486 2.254546 
2.577181 2.718994
+0.233870 0.446515 0.605080 0.814654 1.054963 1.178801 1.633158 1.849743 
2.139379 2.732772
+0.271706 0.335152 0.857227 1.253741 1.387189 1.702170 1.896767 2.191114 
2.479999 2.601359
+0.237386 0.314549 0.438339 0.912164 1.577764 1.877791 2.032790 2.197037 
2.412322 2.536484
+0.361168 0.574093 1.023843 1.468517 1.690562 1.917374 2.187368 2.334035 
2.669095 2.806291
+0.278480 0.398742 0.573342 0.839212 1.073888 1.222093 1.691681 2.165258 
2.377410 2.536882
+0.286018 0.447947 0.615060 0.849446 1.319465 1.463583 1.769948 2.001035 
2.189431 2.450384
+0.219440 0.301601 0.668534 0.861094 1.210001 1.498673 1.745120 1.877765 
2.314377 2.619597
+0.223591 0.352153 0.598841 1.217893 1.359082 1.591744 1.771089 2.213856 
2.561538 2.735416
+0.176857 0.236601 0.395107 0.634632 1.133495 1.335116 1.770374 1.981313 
2.206556 2.339716
+0.334735 0.402265 0.659168 0.781639 0.975228 1.664999 1.872069 2.047533 
2.476961 2.573979
+0.215968 0.284755 0.524241 0.781460 1.334811 1.772379 1.953878 2.194209 
2.578250 2.741939
+0.298193 0.489879 0.812985 1.183691 1.496418 1.679975 2.108792 2.316557 
2.673779 2.851610
+0.312989 0.415446 0.618011 0.899096 1.083683 1.263384 1.887396 2.243064 
2.419448 2.570481
+0.244471 0.431115 0.601512 0.813139 1.102163 1.221061 1.692440 2.033163 
2.221795 2.619838
+0.150949 0.219060 0.349217 0.611327 1.077112 1.250547 1.915518 2.083980 
2.449999 2.792543
+0.161611 0.218964 0.445377 0.927863 1.451151 1.768464 2.130012 2.366724 
2.666003 2.814049
+0.196000 0.297256 0.497266 0.691900 1.089877 1.273685 1.513723 2.006472 
2.273782 2.572221
+0.335268 0.460795 0.685187 0.867664 1.013807 1.479554 2.011994 2.168476 
2.572643 2.717564
+0.257604 0.340872 0.499757 0.843052 1.396548 1.831688 2.034226 2.170332 
2.422618 2.540496
+0.417663 0.631718 0.955424 1.197319 1.659797 1.879883 2.168797 2.359053 
2.578087 2.698249
+0.162052 0.251583 0.439900 0.660911 0.903902 1.320296 1.624758 1.778577 
2.530531 2.799705
+0.256861 0.322803 0.685370 1.086437 1.263276 1.569879 1.851654 2.014946 
2.264711 2.447006
+0.125192 0.176171 0.336135 0.781600 1.200220 1.439966 1.805419 2.077525 
2.462470 2.738186
+0.102286 0.191322 0.774556 1.076151 1.369456 1.627146 1.973015 2.236001 
2.609367 2.812985
+0.173442 0.232622 0.491622 0.844157 1.095241 1.370797 1.696966 2.051411 
2.316061 2.502053
+0.257531 0.343598 0.654071 0.838985 1.048102 1.487473 1.725385 1.897417 
2.430505 2.585998
+0.197900 0.276312 0.440283 0.705103 1.267341 1.740297 1.934483 2.154007 
2.400200 2.624136
+0.409590 0.596785 0.983751 1.181770 1.371153 1.502380 1.758280 2.018571 
2.380053 2.592151
+0.231819 0.332890 0.483514 0.644585 0.816808 0.926308 1.403298 2.233007 
2.467857 2.678461
+0.258610 0.340064 0.670485 0.908467 1.107611 1.456243 1.759580 1.932179 
2.113118 2.310135
+0.184377 0.249203 0.410806 0.587907 1.302501 1.510319 1.724432 1.981890 
2.282904 2.422125
+0.254110 0.313328 0.659859 1.265819 1.412949 1.665930 1.927154 2.101984 
2.551446 2.673030
+0.161592 0.237480 0.376535 0.637094 0.823028 1.137613 1.696425 1.875770 
2.403632 2.639617
+0.384501 0.466812 0.740791 0.938093 1.062352 1.509284 1.749143 1.917797 
2.548157 2.671506
+0.333872 0.419367 0.638994 1.092624 1.520550 1.649447 1.866619 2.148941 
2.346723 2.506140
+0.426216 0.686997 1.235881 1.428854 1.611591 1.792860 2.017593 2.233715 
2.547773 2.696609
+0.262949 0.367509 0.530429 0.741867 0.872474 1.069602 1.745566 2.061187 
2.283843 2.494178
+0.335782 0.547236 0.716211 0.919077 1.275686 1.408437 1.685118 1.967394 
2.217639 2.446679
+0.227629 0.330991 0.486068 1.117571 1.304983 1.510130 1.757258 1.946972 
2.625557 2.782597
+0.359850 0.436633 0.750634 1.201513 1.337571 1.594835 1.970273 2.113840 
2.573808 2.729963
+0.211871 0.304028 0.512758 0.663762 1.086354 1.633335 1.818017 2.129577 
2.391080 2.600766
+0.196092 0.279726 0.434488 0.624802 0.772358 1.404377 1.948777 2.160918 
2.629996 2.775175
+0.176304 0.262521 0.373719 0.581101 1.520108 1.736172 1.933230 2.140172 
2.358130 2.753524
+0.254932 0.381411 0.806187 1.102292 1.534523 1.750280 1.970904 2.159871 
2.455922 2.658405
+0.190385 0.288656 0.449066 0.678174 0.812376 1.449326 1.728657 1.966320 
2.638812 2.789546
+0.251178 0.386509 0.609363 0.797102 1.024159 1.181726 1.454661 2.012630 
2.493092 2.698933
+0.166654 0.266226 0.385171 0.711990 1.397897 1.532347 1.915974 2.088003 
2.565270 2.789532
+0.238453 0.306036 0.449309 0.876277 1.521437 1.933982 2.134420 2.267986 
2.537601 2.658253
+0.161634 0.219919 0.353206 0.524346 0.961806 1.207713 1.687918 1.916939 
2.161870 2.320657
+0.413612 0.597095 0.793763 0.986290 1.281786 1.412660 1.652465 2.016091 
2.384164 2.528578
+0.228655 0.341562 0.480989 0.988605 1.371003 1.477423 1.861026 2.015852 
2.339752 2.773153
+0.259092 0.597012 0.985224 1.321740 1.643354 1.957367 2.288682 2.497474 
2.716492 2.844467
+0.185652 0.304664 0.446232 0.864434 1.091795 1.273770 1.942575 2.095543 
2.524648 2.768245
+0.176687 0.256678 0.745652 0.934909 1.283760 1.440062 1.765242 2.122092 
2.388099 2.590551
+0.189805 0.275637 0.440995 0.821356 1.256020 1.410985 1.929781 2.120144 
2.396030 2.604643
+0.266823 0.337688 0.819408 1.134754 1.289204 1.777028 1.982886 2.221748 
2.590286 2.698098
+0.205348 0.276512 0.527305 0.727412 1.024647 1.653979 1.904178 2.046613 
2.217922 2.455661
+0.293498 0.424494 0.613795 0.956130 1.133981 1.324804 1.809031 1.953922 
2.293854 2.575884
+0.183120 0.249650 0.376204 0.543914 1.350827 1.907220 2.092551 2.255705 
2.514391 2.687901
+0.541205 0.789796 1.058955 1.269415 1.503899 1.702191 1.970176 2.175444 
2.496810 2.652238
+0.229326 0.339475 0.451881 0.661210 0.795832 1.073796 2.027104 2.206371 
2.478903 2.726784
+0.330006 0.506868 0.673076 0.887406 1.228765 1.349226 1.781290 2.086583 
2.277762 2.480029
+0.138389 0.200001 0.396259 0.811975 1.090712 1.460413 1.745493 1.904269 
2.348250 2.699886
+0.176584 0.242161 0.378270 1.177848 1.564718 1.678166 1.951618 2.121413 
2.580109 2.737132
+0.145852 0.198423 0.335644 0.550505 1.019727 1.371188 1.797635 1.943825 
2.207490 2.746470
+0.385078 0.503696 0.703239 1.069987 1.365736 1.472054 1.825827 2.159636 
2.371283 2.520972
+0.284950 0.388050 0.507352 0.879125 1.523530 1.776238 1.929597 2.157558 
2.447986 2.586398
+0.491116 0.756155 1.255200 1.522460 1.776579 2.028121 2.286059 2.429774 
2.679106 2.776164
+0.252477 0.396081 0.713022 0.861502 1.152223 1.370802 1.614010 2.144798 
2.574072 2.712530
+0.282756 0.438437 0.613566 0.847746 1.260772 1.379059 1.642202 2.137540 
2.368369 2.522163
+0.203971 0.322195 0.479842 0.953133 1.211278 1.397635 1.800812 1.954516 
2.403478 2.573713
+0.264533 0.358424 0.628768 1.111242 1.340246 1.506485 1.999590 2.194109 
2.461411 2.667361
+0.177730 0.223680 0.394553 0.556177 0.947415 1.500640 1.733528 1.926046 
2.261466 2.436054
+0.314223 0.363636 0.727886 0.851880 1.053844 1.798132 1.974354 2.182595 
2.537995 2.629683
+0.201778 0.275500 0.404891 0.747466 1.500050 1.841184 1.998843 2.226807 
2.481989 2.669506
+0.132164 0.314955 0.821473 1.196038 1.426590 1.699934 2.036856 2.323497 
2.685471 2.828965
+0.223374 0.347335 0.507730 0.773547 0.967916 1.134129 1.991403 2.306567 
2.521364 2.788746
+0.312742 0.449784 0.583287 0.934234 1.268567 1.365063 1.569295 1.687046 
2.077299 2.595022
+0.124286 0.162126 0.290730 0.654031 1.231658 1.538458 1.893070 2.184784 
2.562637 2.798224
+0.177049 0.251654 0.367891 0.912504 1.557576 1.693045 1.898991 2.072136 
2.350163 2.646045
+0.240517 0.378333 0.547809 0.754272 0.973321 1.103670 1.574418 2.028049 
2.211127 2.562709
+0.427795 0.519003 0.771284 0.937240 1.086617 1.609879 1.878750 2.052791 
2.534118 2.657149
+0.224370 0.317969 0.439666 0.812931 1.398497 1.626632 1.794178 2.114000 
2.309157 2.496836
diff --git a/gr-vocoder/lib/codec2/codebook/lspjvm2.txt 
b/gr-vocoder/lib/codec2/codebook/lspjvm2.txt
new file mode 100644
index 0000000..2b7cabf
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspjvm2.txt
@@ -0,0 +1,513 @@
+5 512
+0.005167 -0.037310 -0.002159 0.016849 0.130396
+0.039445 0.031680 -0.074412 -0.031499 0.060536
+0.019479 -0.030564 -0.048137 -0.056279 -0.027829
+0.020585 -0.011270 0.023913 -0.005706 0.011407
+-0.023217 0.107455 -0.037777 0.004070 -0.017279
+-0.090444 0.007641 0.099001 -0.047913 -0.017199
+0.022700 -0.063865 0.047213 0.043843 -0.036225
+0.001312 -0.123861 -0.038988 0.058666 0.074541
+0.039508 0.110300 0.013954 -0.119228 -0.035807
+-0.047392 0.027035 -0.004412 -0.032650 -0.037150
+0.002491 -0.045447 0.158260 0.022828 -0.030124
+-0.047856 0.088744 -0.009678 0.106688 0.087690
+-0.027941 0.044084 -0.028500 0.018736 -0.069969
+-0.035358 -0.051568 -0.030459 -0.017899 0.027632
+-0.018607 -0.123557 0.019228 0.057485 -0.028907
+0.019057 0.038151 -0.080220 0.034222 0.023081
+0.021312 0.041905 0.112903 0.024092 0.093974
+-0.116679 0.015344 -0.066059 -0.096437 0.004041
+-0.022464 -0.116260 0.047819 -0.003921 -0.073504
+0.001975 -0.025869 0.028200 0.122690 0.010627
+-0.035672 0.078963 -0.009686 0.000743 -0.147582
+0.016932 -0.020291 -0.096896 -0.237875 -0.029121
+0.017376 -0.040130 -0.053865 0.154060 -0.013215
+0.015215 -0.019023 -0.070604 0.032265 0.040340
+0.102365 -0.022746 0.019895 0.050570 0.008845
+-0.034134 0.044441 -0.049387 -0.140481 0.072570
+0.013023 -0.006079 0.037574 0.004937 -0.081501
+0.003696 0.049908 0.007355 0.000403 0.026006
+-0.008466 0.080680 0.061382 -0.108985 -0.088060
+-0.012275 -0.081061 0.020333 -0.079001 0.068724
+-0.014081 -0.042609 0.093365 0.044120 0.000303
+0.063391 0.096574 -0.105424 0.039041 0.010412
+-0.054031 -0.084948 0.080406 -0.035883 0.137428
+0.063037 0.050562 0.024690 -0.031394 0.130320
+-0.015501 -0.078884 -0.076886 -0.013864 -0.073587
+0.048778 0.003814 -0.031125 0.046897 0.028304
+0.048692 0.132795 0.065450 0.059487 -0.042396
+-0.176999 0.056943 -0.004135 -0.049378 -0.041083
+-0.039445 -0.016292 -0.004550 0.062010 -0.079613
+-0.054566 -0.008476 -0.016710 0.049202 0.025758
+-0.078723 0.092091 0.096536 -0.065079 0.021161
+0.076657 0.009203 -0.036866 -0.016559 0.012823
+0.008225 -0.003006 0.108033 0.043120 -0.060870
+-0.019346 0.022790 -0.001728 0.062304 -0.016965
+-0.001302 -0.014490 -0.041803 -0.034058 -0.197066
+-0.033655 -0.127217 -0.108681 -0.010571 -0.004705
+-0.015553 -0.086069 0.034109 -0.101379 0.002068
+-0.004003 -0.044637 -0.068617 0.052228 -0.047812
+-0.043307 0.035681 0.042207 -0.055946 0.055944
+-0.026792 -0.012601 -0.056710 -0.021094 0.105842
+-0.025598 -0.078858 -0.013487 0.030728 -0.031956
+0.031444 0.022763 0.025364 0.121366 0.070736
+-0.084556 0.098118 -0.024301 -0.058655 -0.043194
+-0.011752 -0.043781 0.091051 -0.071201 -0.020980
+0.082904 -0.031657 -0.088247 0.066709 -0.079182
+-0.012151 0.011796 -0.010589 0.100656 0.094539
+0.035967 0.025338 0.071826 0.009741 -0.040209
+0.006866 -0.015095 -0.168469 -0.056133 0.060145
+0.045830 -0.068969 0.034551 0.015842 -0.092809
+0.054699 0.138744 0.001726 0.006927 0.005167
+0.016978 0.046384 -0.060183 -0.040742 -0.072692
+-0.022489 -0.029728 -0.065018 -0.124741 0.044927
+-0.029057 -0.037154 0.031068 0.060086 0.009984
+0.009311 -0.006957 -0.105508 0.059637 -0.019564
+-0.068154 -0.066443 0.000799 0.028579 0.097063
+0.096936 0.030230 -0.034623 -0.088918 0.040334
+0.019439 -0.050707 -0.003294 -0.028505 -0.053599
+0.062460 -0.070688 -0.016465 -0.035680 0.017378
+0.009363 0.048761 0.043374 0.039587 -0.023232
+-0.067033 0.042663 0.054070 -0.042797 -0.089391
+-0.030497 -0.050249 0.059528 0.089089 -0.029633
+0.064125 -0.086614 -0.002005 0.080620 0.000502
+-0.003490 0.097336 0.099565 0.015648 0.006691
+0.077668 0.016572 0.035404 -0.046026 0.017237
+-0.048631 0.009314 0.141479 0.017079 0.043796
+-0.106474 0.145951 0.057740 0.011250 -0.059443
+0.027572 0.026650 0.008527 0.002949 -0.037680
+-0.077991 -0.090617 0.003420 -0.046010 0.007354
+0.019056 -0.128651 0.016464 0.004584 -0.030883
+-0.092069 0.038976 -0.081840 0.066695 -0.047340
+0.003513 0.040613 0.046815 -0.023406 0.062389
+0.021759 0.024928 -0.018922 -0.048006 0.063800
+-0.014416 -0.050333 0.042628 -0.114934 -0.101450
+0.062139 0.029295 -0.065908 0.111463 0.050781
+-0.022707 0.135414 0.003548 0.134535 -0.048259
+-0.092344 -0.027727 0.016343 -0.060786 -0.081502
+-0.005412 -0.026229 -0.143331 0.052404 -0.077298
+-0.035919 -0.041968 -0.106108 -0.004369 0.065028
+0.096370 -0.053299 0.043317 -0.049735 0.049815
+0.032324 0.051309 -0.009607 -0.205917 0.005023
+-0.054316 -0.022895 0.099327 -0.006927 -0.076574
+-0.111024 0.111026 0.038381 -0.060368 0.064238
+-0.034316 0.026846 0.025740 -0.076162 -0.163904
+0.055955 -0.056885 0.014831 -0.120715 0.090938
+0.035289 -0.036439 0.060012 0.080302 0.036215
+0.065250 0.083030 -0.058784 0.104826 -0.051805
+-0.011099 -0.006420 0.053042 0.024127 0.092534
+0.058569 -0.033442 0.025186 -0.018222 0.117744
+0.044345 -0.042456 -0.043767 -0.021378 -0.121965
+0.027371 0.052731 -0.020316 0.036912 0.115357
+0.031150 0.041547 0.059267 -0.039672 -0.086918
+-0.162369 0.024801 0.031725 0.083400 -0.034463
+0.000272 -0.008147 -0.002016 0.131953 -0.092911
+-0.091944 -0.062864 -0.005221 0.063647 -0.012658
+0.042685 0.067952 0.038644 -0.153221 0.096841
+0.108299 0.089446 -0.047164 0.004196 -0.043268
+-0.035456 0.050838 0.070444 0.084465 -0.079980
+-0.048916 0.057726 0.023894 0.027653 0.017775
+0.015461 -0.030287 -0.022245 0.052081 -0.150947
+-0.002682 -0.056774 -0.123366 -0.091754 0.006536
+0.006473 -0.143025 0.054690 -0.043189 0.032970
+0.027446 0.033127 -0.132722 -0.010417 -0.080097
+-0.018187 0.001858 0.111290 -0.090749 0.059434
+-0.068738 0.090679 -0.145070 -0.065277 0.063514
+-0.003982 -0.056382 -0.003673 0.015845 -0.073396
+0.043688 0.002836 0.069211 0.124852 -0.053313
+-0.040946 0.070440 -0.107024 -0.019199 -0.033672
+-0.001440 0.021680 0.110595 -0.053452 -0.052426
+0.035461 -0.028179 -0.049041 0.022580 -0.010989
+-0.002913 -0.051691 -0.075881 0.037241 0.076377
+0.034735 -0.031556 0.073516 -0.001427 0.016296
+-0.017537 0.003346 -0.099774 -0.067624 -0.044257
+-0.018202 0.030622 0.012773 0.046475 -0.121785
+-0.057265 0.116179 -0.079916 0.066396 0.050104
+-0.013177 0.057766 -0.047879 -0.109526 -0.146491
+0.032675 -0.049318 -0.057045 -0.080068 0.089621
+-0.046564 -0.029992 0.040828 0.029281 -0.037369
+-0.009731 -0.082145 -0.117622 0.117077 0.037369
+0.000820 -0.106634 -0.007967 0.000812 0.140637
+0.036530 0.062121 -0.065504 -0.094930 0.121336
+0.017530 -0.017330 -0.040402 -0.018255 0.010992
+0.019746 -0.027564 0.033588 0.042466 -0.003143
+0.013767 0.084179 0.033753 -0.017279 -0.009676
+-0.006452 0.032645 0.031852 -0.030975 -0.043384
+-0.005433 -0.015258 0.053273 0.054748 -0.064736
+0.008959 -0.141223 -0.032957 -0.015079 0.018198
+-0.001681 0.143079 0.076000 0.001037 -0.048744
+0.022062 0.026030 -0.008263 -0.050353 -0.023037
+-0.036477 -0.051733 0.137823 -0.034438 -0.007573
+-0.004256 0.064218 0.075183 0.095106 0.026497
+0.026360 0.009791 -0.058039 0.053315 -0.077817
+-0.033283 -0.081151 -0.055220 0.004268 0.017539
+-0.007329 -0.117200 0.093220 0.037359 0.002718
+0.010749 0.018281 -0.075800 -0.024889 0.005720
+0.022129 0.035613 0.036187 0.032246 0.105439
+-0.073766 0.016887 -0.059934 -0.049471 0.073520
+-0.024041 -0.104642 0.023557 -0.059746 -0.043871
+0.022311 -0.000250 -0.074027 0.198593 0.102732
+0.024478 0.077658 -0.060042 -0.018229 -0.149648
+-0.009871 -0.105822 0.007585 -0.161459 -0.041121
+-0.021460 0.009020 -0.065018 0.111801 -0.024953
+0.074594 -0.026041 -0.062859 0.009199 0.069609
+0.078672 -0.033414 0.054128 0.005408 -0.016273
+0.052076 0.107610 -0.067518 -0.096400 0.033703
+-0.014350 -0.024676 0.056254 -0.043770 -0.060847
+-0.004185 0.073550 -0.057830 -0.016644 0.029096
+0.005755 0.026472 0.040449 -0.091950 -0.048538
+-0.034439 -0.107938 0.090712 -0.117001 0.043170
+-0.006505 -0.035277 0.117316 0.127002 0.047906
+-0.001441 0.118379 -0.132165 0.007380 0.023823
+-0.020120 -0.083725 0.047284 0.023795 0.074123
+-0.013439 0.024994 0.060254 -0.069120 0.166373
+-0.024228 -0.063150 -0.046506 -0.077202 -0.054592
+-0.006571 0.010335 -0.006568 0.003982 0.075837
+0.008643 0.136339 -0.005502 0.033910 -0.066379
+-0.127371 -0.006954 0.039770 -0.070123 0.060925
+-0.046386 -0.026420 -0.005280 0.103509 -0.022310
+-0.003740 -0.014999 -0.037770 0.080005 0.025231
+-0.054995 0.071017 0.009442 -0.075737 0.013441
+0.051947 0.027097 -0.070351 -0.055705 -0.021115
+0.021387 0.029232 0.163331 -0.032380 0.010008
+-0.011987 -0.028631 0.002665 0.014770 -0.009558
+-0.034325 0.015830 -0.091253 -0.012677 -0.107378
+-0.034624 -0.047725 -0.102330 0.042525 -0.006869
+0.014048 -0.043127 0.052384 -0.047473 0.055102
+0.009744 -0.033646 -0.081755 -0.001464 -0.016223
+-0.036697 -0.002279 0.023279 -0.036221 0.101478
+-0.058454 0.065074 0.003524 0.005010 0.097182
+-0.038171 -0.037943 -0.009994 -0.033355 -0.044552
+0.041318 0.065041 0.000092 0.100816 0.029007
+-0.031803 0.183537 -0.009617 -0.010544 -0.028465
+0.006900 -0.014988 0.090490 -0.174817 0.027464
+0.063314 -0.049281 -0.001567 0.091421 -0.078603
+-0.004869 -0.063266 -0.001922 0.069338 0.081771
+0.058737 0.073195 0.081676 -0.047808 -0.025797
+-0.004185 0.033203 -0.125472 -0.108148 0.031258
+0.035192 0.029957 0.046675 0.047238 -0.088197
+0.033315 0.114919 -0.049180 0.025707 0.053843
+0.035182 0.140206 -0.058660 -0.025978 -0.019658
+-0.014847 -0.021051 -0.034385 -0.121789 0.173406
+-0.112251 -0.022333 0.071206 0.028998 0.046468
+0.067704 -0.026159 -0.158316 0.014936 0.040216
+-0.010137 -0.053492 0.004935 -0.011277 0.073852
+0.091261 0.114794 -0.014060 -0.051545 0.077316
+0.101258 -0.046137 0.022994 -0.066767 -0.065537
+0.049952 -0.043582 0.012823 0.009313 0.036343
+0.054885 0.037796 0.021940 0.013211 0.006019
+-0.099578 0.058596 -0.045463 -0.015632 -0.087141
+-0.019273 -0.033140 0.043796 0.119057 -0.081813
+-0.021538 -0.070453 -0.052551 0.077213 0.000094
+0.050268 0.092271 0.051688 -0.025224 0.075437
+0.027983 0.069205 0.031787 -0.099975 0.004387
+-0.002747 -0.056567 0.161394 0.000164 0.084189
+-0.124844 0.050329 0.009844 0.055877 0.055701
+0.030479 0.028843 -0.001076 -0.017173 -0.102770
+-0.038426 -0.133841 -0.035840 -0.072046 0.020206
+0.016438 -0.097885 0.041857 0.034601 0.030422
+-0.089192 -0.014112 -0.052276 0.012005 -0.029335
+-0.011331 0.101833 0.063827 0.044288 0.101597
+-0.034689 -0.027434 -0.017801 -0.079224 0.067103
+-0.027456 -0.098034 0.009448 -0.038986 -0.156729
+0.085023 0.033136 -0.021343 0.110701 -0.011901
+-0.006484 0.082023 -0.027094 0.091208 -0.013163
+-0.012223 0.005933 0.010653 -0.098119 -0.005304
+-0.021061 -0.058077 -0.073035 0.097856 -0.102847
+-0.035329 -0.092754 -0.101463 -0.048671 0.055015
+0.102145 0.062017 0.016002 0.036489 0.059000
+0.042861 0.025447 -0.019735 -0.107841 -0.033752
+-0.043982 -0.067059 0.051092 0.025235 -0.147107
+-0.016269 0.123009 0.035894 -0.020453 0.040013
+0.015557 0.015825 0.080712 -0.069630 -0.149739
+0.022006 -0.008848 0.040169 -0.095688 0.059575
+-0.030641 -0.061353 0.046302 0.104489 0.043372
+-0.001579 0.059737 -0.104073 0.042342 -0.048611
+-0.013811 -0.056255 0.107179 0.057433 0.084815
+0.030217 0.022360 -0.040342 -0.028775 0.120588
+0.041270 -0.045775 -0.030195 -0.106859 -0.104349
+0.072418 -0.003603 -0.013072 0.040728 0.086869
+0.091943 0.066517 0.024442 -0.030929 -0.032920
+-0.160336 -0.010347 -0.068458 0.017458 0.044823
+0.050694 0.067625 0.040303 0.113164 -0.038747
+-0.065558 -0.106357 -0.028352 0.121488 0.026548
+-0.007820 0.054872 0.094674 -0.099533 0.005231
+0.118132 0.042780 -0.065079 0.031440 0.043229
+-0.050024 0.015943 0.073917 0.034049 0.010548
+-0.024979 0.022639 0.027795 0.049491 0.048762
+-0.002738 -0.010783 -0.027637 -0.006986 -0.104141
+-0.066719 -0.061742 -0.067028 -0.053057 -0.003478
+-0.050948 -0.122196 0.022082 0.002595 0.015094
+0.006014 0.005784 -0.184537 -0.034872 -0.036104
+0.055412 0.006886 0.103488 -0.063001 0.096665
+-0.035533 0.009847 -0.095114 0.008588 0.023736
+-0.034278 -0.111970 -0.041172 0.039730 -0.102952
+0.063775 0.039273 0.109863 0.091800 0.030306
+-0.082206 0.089449 -0.058478 -0.029341 0.038389
+0.061057 -0.024711 0.111044 -0.035079 -0.027985
+0.014570 0.002046 -0.031545 0.058848 -0.019500
+-0.002475 -0.025589 -0.144358 0.063478 0.124927
+-0.014094 -0.010970 0.031621 -0.040043 0.004389
+0.025003 0.052397 -0.054526 -0.073469 0.026795
+-0.024697 0.024739 0.118299 0.014948 -0.132109
+0.020192 0.037815 -0.090270 0.049313 0.082764
+-0.022642 -0.006053 -0.038073 -0.057363 -0.107347
+0.033166 -0.027556 -0.019765 -0.111958 0.027773
+-0.063001 -0.052998 0.019353 -0.009646 -0.011270
+0.011872 -0.006508 -0.122226 0.059824 0.041779
+0.016445 -0.031890 -0.036310 0.013085 0.091631
+0.062866 0.054501 -0.117523 -0.010907 0.087026
+-0.014974 -0.035920 -0.048565 -0.019246 -0.043405
+-0.006959 0.006211 0.042370 0.014603 -0.006435
+0.019149 0.078038 -0.020556 0.018114 -0.036521
+-0.054036 0.007325 0.056349 -0.033497 -0.025960
+0.050184 -0.066536 0.091501 0.071356 -0.049044
+-0.032263 -0.095268 -0.008784 0.049033 0.036929
+0.020357 0.152151 0.040814 -0.063159 -0.024324
+-0.017084 0.011876 -0.015442 -0.019811 -0.000366
+-0.002700 -0.072981 0.109288 0.007473 -0.049442
+-0.054040 0.051947 0.019359 0.129160 0.021981
+0.002248 0.035262 -0.023141 0.064666 -0.078273
+-0.031663 -0.031343 -0.006058 -0.045421 0.017466
+-0.067122 -0.130784 0.067057 0.052460 -0.041165
+-0.004411 0.046453 -0.055461 0.048162 -0.009687
+0.021530 0.007211 0.104764 0.079849 0.086248
+-0.072791 0.001112 -0.027964 -0.071233 -0.013339
+0.007979 -0.118231 0.076826 -0.060762 -0.084358
+-0.011447 0.009765 0.014163 0.164784 -0.015892
+-0.020756 0.152509 -0.014014 -0.041853 -0.117008
+-0.011755 -0.005766 -0.086896 -0.139650 -0.032342
+0.025651 -0.007843 -0.039073 0.103397 -0.042591
+-0.005971 -0.001324 -0.053945 -0.000716 0.048977
+0.130185 0.028226 0.061179 0.024489 -0.021939
+-0.007019 0.054336 -0.010040 -0.095411 0.082406
+-0.032130 -0.015054 0.033059 0.002802 -0.080159
+-0.022452 0.077426 -0.015314 0.033583 0.028479
+0.023293 0.035078 0.006442 -0.110541 -0.106244
+-0.034737 -0.104140 -0.034570 -0.114316 0.079382
+0.006009 0.003901 0.080081 0.055082 0.012896
+0.064981 0.057219 -0.112986 0.003906 -0.028414
+-0.012383 -0.054541 0.077483 0.004267 0.123567
+0.007369 0.099856 0.023273 -0.028194 0.122030
+-0.036635 -0.126589 -0.034567 -0.028288 -0.065040
+0.014280 0.011435 -0.004867 0.043901 0.035395
+0.028599 0.075858 0.118460 0.070581 -0.051903
+-0.170905 0.050352 0.053514 -0.017139 0.021748
+-0.096610 0.008904 -0.001049 0.078787 -0.101201
+-0.026229 -0.019757 -0.035771 0.054142 0.068041
+-0.020328 0.099979 0.096623 -0.046957 -0.001733
+0.049586 0.052458 -0.031724 -0.028332 -0.005418
+0.046710 0.014238 0.133125 -0.005428 -0.080055
+-0.033226 0.034007 0.025272 0.033924 -0.044662
+-0.034690 -0.079173 -0.160689 -0.153893 -0.228771
+-0.002450 -0.083966 -0.168294 0.010694 -0.012167
+0.000004 -0.044377 0.023373 -0.077437 0.012178
+-0.015899 -0.010828 -0.062847 0.029927 -0.074557
+-0.053306 0.049688 0.057017 -0.022571 0.015337
+-0.046545 0.018895 -0.024848 -0.004424 0.165442
+-0.060201 -0.098629 -0.065190 0.036582 -0.038566
+0.051453 0.093478 0.039619 0.117535 0.090386
+-0.029366 0.108075 -0.016568 -0.093576 -0.048799
+-0.045599 -0.023619 0.070072 -0.109294 0.001548
+0.076285 -0.091274 -0.068829 0.000215 -0.046519
+-0.022512 -0.027067 0.014905 0.079017 0.140699
+0.061141 0.009178 0.097811 0.033468 -0.006666
+0.007163 -0.007578 -0.124238 -0.025271 0.017581
+0.042405 -0.034252 0.064890 0.002500 -0.139083
+0.009733 0.158179 0.014474 0.038913 0.056290
+-0.004998 0.075401 -0.030557 -0.038595 -0.049070
+-0.014680 -0.076306 -0.132365 -0.177693 0.091760
+-0.057238 -0.072379 0.050877 0.051489 0.028125
+0.004991 0.032621 -0.167359 0.041002 -0.007072
+-0.086405 -0.042263 -0.019757 -0.011524 0.066004
+0.085670 0.008071 -0.013614 -0.062142 0.083280
+0.000887 -0.075820 0.008295 -0.020136 -0.016886
+0.089657 -0.106260 -0.051491 -0.012687 0.054778
+0.011535 0.086613 0.053803 0.027164 -0.023825
+-0.040009 0.080987 0.026309 -0.000334 -0.085288
+-0.024208 -0.085040 0.096077 0.120527 -0.044181
+0.003034 -0.091142 0.006471 0.115971 -0.026358
+0.003489 0.083633 0.109975 -0.029425 0.061726
+0.056115 -0.006711 0.013158 -0.062917 -0.015029
+0.003354 0.031574 0.119045 0.022859 0.023777
+-0.068292 0.115604 0.031617 0.008953 0.006943
+0.014420 0.008569 -0.031547 -0.006857 -0.051690
+-0.086683 -0.108339 0.005093 -0.108646 -0.034720
+0.054273 -0.096753 0.050806 -0.021115 -0.025278
+-0.079997 0.027008 -0.034211 0.090949 0.005678
+0.019288 0.042083 0.062119 0.019301 0.040859
+-0.009113 0.022427 -0.004019 -0.060890 0.032884
+-0.012373 -0.037976 0.017625 -0.079369 -0.050788
+0.079720 -0.039347 -0.085324 0.091044 0.026653
+-0.063122 0.099371 -0.024736 0.084631 -0.100421
+-0.073313 0.014317 0.022555 -0.116051 -0.063966
+-0.009688 -0.063666 -0.131709 0.016744 -0.135028
+-0.003708 -0.043685 -0.121631 -0.036930 0.125776
+0.084333 0.010114 0.071231 -0.010395 0.059391
+0.017760 0.033034 -0.018996 -0.130540 0.025758
+-0.018261 -0.060044 0.127025 -0.032724 -0.107299
+-0.064538 0.090073 -0.010186 -0.066127 0.107025
+-0.010940 0.003083 0.019030 -0.023935 -0.140176
+0.003549 -0.042402 -0.010695 -0.185915 0.060835
+0.005405 -0.013822 0.029205 0.079338 0.068155
+0.071485 0.030282 -0.087207 0.073480 -0.027940
+0.004896 -0.033246 0.072637 0.018017 0.054712
+0.026184 -0.005287 0.034456 -0.036753 0.079232
+0.072707 0.004506 -0.039353 -0.015560 -0.071466
+0.010257 0.067446 -0.006598 0.047396 0.072218
+0.023405 0.082663 0.015319 -0.035436 -0.075461
+-0.124036 -0.032046 0.060837 0.010231 -0.053024
+0.022800 0.042891 -0.041549 0.132395 -0.095330
+-0.077091 -0.058554 -0.070632 0.047570 0.031856
+0.000127 0.114996 0.058660 -0.092472 0.064503
+0.096450 0.066200 -0.001059 0.039487 -0.032859
+-0.065721 0.001601 0.088037 0.059828 -0.047411
+-0.077714 0.010275 0.013629 0.003304 0.005407
+0.000665 0.012927 -0.077525 0.069202 -0.157417
+0.014547 -0.095965 -0.087546 -0.067375 -0.027867
+0.005458 -0.095839 0.105294 -0.044892 0.045151
+-0.001349 0.038356 -0.127152 -0.080503 -0.105423
+-0.018484 0.008439 0.104398 -0.027959 0.082086
+-0.020605 0.042785 -0.109139 -0.025958 0.079733
+0.036289 -0.083773 -0.033819 0.032566 -0.065556
+0.006659 0.002090 0.097027 0.115715 -0.013271
+-0.067514 0.128365 -0.089129 0.026160 -0.040584
+-0.002443 -0.017254 0.129204 -0.110078 -0.064943
+0.089215 -0.022299 -0.034959 0.022446 -0.019254
+-0.038900 -0.069862 -0.070540 0.069949 0.111993
+-0.006311 -0.009057 0.094278 -0.014932 0.003657
+-0.019323 0.026145 -0.062611 -0.073753 -0.007182
+0.014101 0.015776 0.052537 0.064728 -0.160187
+-0.005122 0.076356 -0.104763 0.091493 0.020225
+-0.000433 0.062698 -0.060457 -0.147540 -0.066168
+0.007195 -0.061498 -0.037801 -0.039763 0.059551
+-0.028410 -0.074510 0.057667 0.020584 -0.042510
+-0.025311 -0.037825 -0.188010 0.077423 0.030749
+-0.025465 -0.067541 0.003073 -0.049778 0.127789
+0.002786 0.120009 -0.067812 -0.026565 0.111272
+0.023219 -0.024403 -0.014507 -0.048624 0.022163
+0.014596 -0.052136 0.001580 0.064595 0.017963
+0.021330 0.098862 -0.009253 -0.041062 0.008903
+-0.013829 0.031967 0.076571 -0.005348 -0.044010
+0.031252 0.000369 0.036818 0.072854 -0.038569
+0.004161 -0.128017 -0.053152 0.050896 -0.015212
+-0.036159 0.097995 0.068397 -0.048472 -0.056131
+-0.011920 0.059188 0.010215 -0.061152 -0.011717
+-0.035949 -0.057039 0.090859 -0.029682 0.041466
+-0.025106 0.131191 0.059327 0.085383 0.021699
+0.049230 0.036630 -0.077086 0.017806 -0.088790
+0.004040 -0.069533 -0.026785 0.009666 0.014017
+-0.055897 -0.096299 0.120693 0.029995 0.032602
+-0.001365 0.034015 -0.053512 0.001573 -0.019170
+0.003956 0.006452 0.067313 0.028301 0.160615
+-0.053111 0.013990 -0.027060 -0.013638 0.039376
+-0.054462 -0.096553 0.079994 -0.043791 -0.025051
+-0.003222 0.019418 -0.049525 0.151136 0.034123
+0.055117 0.058918 -0.017393 0.026169 -0.126380
+-0.019008 -0.028939 -0.014027 -0.173373 -0.032841
+-0.003370 0.039680 -0.118311 0.114094 -0.041869
+0.041121 -0.038391 -0.096074 -0.032479 0.060222
+0.063968 -0.024528 0.018158 -0.009892 -0.043882
+-0.005004 0.129800 -0.025438 -0.121186 0.049860
+0.010448 -0.040388 0.061853 -0.017304 -0.035088
+-0.008678 0.061476 -0.039493 -0.005055 0.079169
+0.046134 0.009770 0.068294 -0.078965 -0.043792
+-0.030529 -0.053845 0.053853 -0.140682 0.111461
+0.003549 -0.014939 0.148955 0.072861 0.004332
+0.015386 0.062006 -0.122325 -0.032529 0.010241
+-0.047982 -0.126440 0.055840 0.067128 0.101189
+-0.002630 0.031969 0.046076 -0.080194 0.104740
+-0.033486 -0.077818 -0.058697 -0.095258 -0.111074
+0.037236 0.011711 0.001113 -0.005664 0.048588
+0.041131 0.098257 0.033126 0.029317 -0.095311
+-0.071555 -0.039999 0.026678 -0.072182 0.035031
+-0.007997 -0.048174 -0.006796 0.075959 -0.052060
+-0.007645 0.037076 -0.035574 0.085576 0.034126
+-0.050676 0.051430 0.031999 -0.134308 -0.001489
+0.084564 -0.018394 -0.097410 -0.042931 -0.025608
+-0.025489 0.041919 0.142482 0.004617 -0.041085
+-0.028816 -0.015527 -0.031005 0.028405 -0.022240
+-0.067737 -0.025241 -0.052578 0.012322 -0.120556
+0.016278 -0.081744 -0.099160 0.025144 0.025441
+0.003176 -0.073871 0.031718 -0.028622 0.029031
+0.017910 -0.030693 -0.104215 -0.015422 -0.065738
+-0.048346 -0.012847 0.046849 -0.008621 0.058771
+-0.054495 0.031597 -0.038844 0.043138 0.092588
+-0.071371 -0.059093 -0.001197 0.001766 -0.074762
+0.029470 0.089616 0.005009 0.052977 0.015899
+-0.045424 0.158466 -0.038717 -0.032506 0.028687
+0.011435 -0.006772 0.047605 -0.144659 -0.031229
+0.073577 0.011530 -0.008172 0.058883 -0.088412
+0.033615 -0.034120 -0.030701 0.101215 0.096645
+0.027368 0.041249 0.081502 -0.025440 0.007592
+0.059893 0.012106 -0.112009 -0.114692 0.016397
+0.087068 0.016199 0.051263 0.011915 -0.085364
+0.026046 0.145258 -0.047521 0.077134 -0.000345
+0.034532 0.099801 -0.087591 -0.059719 -0.058671
+0.022737 -0.001887 -0.107049 -0.116757 0.134115
+-0.055403 0.005157 0.067618 0.081074 0.071787
+0.063802 -0.003430 -0.106491 0.017543 0.002214
+-0.013785 -0.032962 0.010084 0.024325 0.045963
+0.059883 0.072282 -0.008608 -0.015127 0.048225
+0.041752 -0.068845 0.012227 -0.090748 -0.035309
+0.045353 -0.078624 -0.019489 0.035531 0.058571
+0.045414 0.039032 -0.011106 0.048787 -0.025336
+-0.084893 0.031896 0.010850 0.012526 -0.053205
+0.016952 -0.044041 0.068766 0.097328 -0.122229
+0.027016 -0.051759 -0.057246 0.074566 0.006201
+0.069904 0.100068 0.076124 0.004278 0.029466
+0.045229 0.055683 0.018790 -0.067806 0.039373
+0.029179 -0.036787 0.129921 -0.028993 0.037711
+-0.105011 0.138747 -0.004370 0.052080 0.050835
+0.025511 -0.002962 0.007852 -0.055234 -0.075055
+0.000460 -0.089231 -0.030467 -0.080347 0.007488
+0.067460 -0.076368 0.084991 0.039544 0.033391
+-0.044318 0.006390 -0.079387 -0.002909 -0.029708
+-0.047882 0.063040 0.065719 0.021811 0.070945
+-0.007571 -0.001302 -0.064119 -0.068005 0.051040
+-0.017747 -0.063938 0.018673 -0.038391 -0.099966
+0.057475 -0.007669 0.009384 0.109283 0.012248
+-0.048858 0.092498 0.011967 0.061525 -0.028819
+-0.015131 -0.024160 -0.033220 -0.101648 -0.017980
+-0.003342 -0.049829 -0.125096 0.128241 -0.047377
+-0.028943 -0.109072 -0.066133 -0.015454 0.098334
+0.053371 0.011324 0.042781 0.044313 0.062510
+0.098408 0.065410 -0.040693 -0.116351 -0.032327
+-0.013634 -0.058591 0.081507 0.042019 -0.099770
+-0.018275 0.084624 -0.007512 -0.041113 0.054203
+0.017879 -0.029747 0.059865 -0.048281 -0.111513
+-0.022478 0.002059 0.022383 -0.125360 0.058216
+0.002386 -0.081600 0.049288 0.157428 0.057724
+0.005046 0.102125 -0.083473 0.044059 -0.094864
+0.039120 -0.063306 0.057341 0.060519 0.107383
+0.007076 -0.009373 -0.012555 -0.066630 0.117121
+0.025254 -0.008796 -0.062102 -0.083164 -0.079007
+0.084839 0.042308 -0.055353 0.036386 0.132641
+0.084464 0.056288 -0.011636 -0.059554 -0.087748
+-0.147377 -0.052414 -0.010203 -0.009159 -0.018829
+0.009621 0.061633 0.015716 0.086332 -0.061465
+-0.011833 -0.062998 -0.021168 0.125194 0.045025
+0.052316 0.025720 0.095155 -0.093252 0.028720
+0.056113 0.063321 -0.045315 0.025199 0.023591
+-0.070481 0.072350 0.092458 0.047973 -0.025439
+-0.001281 0.021028 0.034576 0.084779 0.006867
+-0.010323 -0.046330 -0.009172 0.030485 -0.117679
+-0.021782 -0.034737 -0.086292 -0.045885 0.009655
+-0.037167 -0.123331 0.017291 -0.028319 0.071447
+-0.057180 -0.032912 -0.139418 -0.025966 -0.039305
+0.009411 -0.054017 0.076307 -0.060252 0.110087
+-0.061366 0.038897 -0.098107 0.046119 0.043021
+-0.029130 -0.096885 0.007623 0.090513 -0.097416
+0.053264 0.058296 0.054372 0.060769 0.015586
+-0.067956 0.059996 -0.037850 0.005986 0.000778
+0.045873 -0.065546 0.077900 -0.085638 0.000698
+0.027694 -0.021241 -0.002777 0.034509 -0.048173
+0.009988 0.001008 -0.077434 0.026002 0.139490
+0.008910 0.007791 0.059292 -0.057047 0.014127
+-0.022959 0.085710 -0.068087 -0.081561 0.005935
+0.007577 0.061544 0.076542 0.001660 -0.113279
+0.024973 0.086750 -0.061674 0.095059 0.089352
+-0.024436 0.024181 -0.016117 -0.073634 -0.067986
+0.074701 -0.046868 -0.054634 -0.092485 0.006662
+-0.033256 -0.053774 0.049001 -0.002339 0.013545
+-0.006432 -0.012089 -0.086842 0.104105 0.061991
diff --git a/gr-vocoder/lib/codec2/codebook/lspjvm3.txt 
b/gr-vocoder/lib/codec2/codebook/lspjvm3.txt
new file mode 100644
index 0000000..72767df
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspjvm3.txt
@@ -0,0 +1,513 @@
+5 512
+0.007066 0.075781 -0.070082 -0.092014 -0.066477
+0.090510 0.106622 0.025911 -0.016760 0.003724
+-0.024628 0.058332 0.012876 0.059557 -0.002092
+-0.065092 -0.096975 -0.041837 -0.002432 0.058918
+0.014358 0.080049 -0.008803 -0.002091 -0.097584
+0.085323 -0.026053 -0.086585 -0.009541 0.130555
+0.045391 0.037557 0.074726 -0.050453 0.033517
+-0.035576 -0.084211 -0.086430 0.008910 -0.072674
+-0.098699 -0.024540 -0.048972 -0.066975 -0.048791
+0.032184 0.070992 -0.014416 0.141892 -0.044249
+-0.108921 -0.020450 0.115988 0.011287 -0.026273
+0.024341 0.138519 -0.036467 0.020684 0.074258
+-0.053563 0.077463 0.072166 0.032112 -0.079303
+-0.025039 0.079675 0.094211 -0.115754 0.038892
+0.050897 -0.024639 0.057826 -0.110429 0.071184
+0.015309 -0.034027 -0.055726 0.043179 -0.063089
+0.043359 -0.011698 0.006637 0.002751 0.030110
+-0.001261 0.111470 0.043277 -0.004205 -0.021599
+-0.005698 0.058842 0.168422 0.059313 -0.007971
+-0.087599 0.073891 -0.083238 0.099279 -0.017364
+-0.018429 0.014040 -0.014864 -0.111512 0.089450
+-0.028498 -0.087983 -0.077320 -0.062602 0.000328
+-0.027152 -0.093796 0.111381 -0.018603 0.092394
+-0.007256 0.025391 0.011454 0.012802 -0.041680
+0.008078 0.020905 -0.105401 -0.083265 0.027756
+-0.049630 -0.044085 -0.051424 0.104125 -0.000779
+-0.063079 -0.130699 0.070500 0.033468 -0.019802
+-0.061011 0.094839 -0.040122 0.118409 0.056950
+0.086391 -0.006615 0.045337 -0.044190 -0.106474
+-0.081912 0.067557 -0.031649 -0.014437 0.057585
+-0.121755 -0.049113 0.057109 -0.049872 0.044104
+0.064705 -0.091589 0.037286 -0.048606 -0.045398
+0.003456 0.057230 0.006262 -0.055206 -0.063871
+-0.005249 0.081783 0.134969 -0.002331 0.052643
+-0.093346 0.072093 0.116025 -0.031453 -0.006012
+-0.038574 -0.030841 0.010288 0.024420 0.051657
+-0.086584 0.046381 0.005410 0.052622 -0.072741
+0.079023 0.078099 -0.093912 0.005477 -0.006721
+0.100232 -0.017587 0.044819 0.036655 0.021580
+-0.006829 -0.050076 -0.003020 0.088246 0.013560
+-0.015690 0.012477 -0.052595 -0.048861 -0.033688
+0.055615 0.092298 -0.066194 0.016416 -0.066059
+0.046976 0.003023 0.104646 0.109136 0.018293
+-0.016507 -0.006859 0.004326 0.070843 0.140750
+0.025774 0.034730 -0.079590 0.050054 -0.107950
+0.002378 0.097498 0.027111 -0.122953 -0.002423
+-0.020539 -0.063263 -0.095493 -0.157361 -0.039183
+0.025721 0.026897 -0.001200 0.033997 -0.001749
+0.061593 -0.013053 -0.106317 -0.068190 0.046352
+-0.056060 0.157084 -0.049365 0.053959 -0.051065
+-0.047672 0.081570 0.064342 -0.030705 -0.070806
+-0.076503 -0.059471 0.012419 0.073968 -0.026179
+-0.038473 0.059013 -0.035783 -0.030057 -0.036346
+-0.052692 -0.015346 -0.022687 -0.035279 0.013314
+0.068397 -0.046609 -0.009593 -0.040796 0.157438
+-0.075360 -0.110464 0.031839 -0.029035 -0.015222
+0.041013 -0.099212 -0.108920 -0.008627 0.012095
+0.020855 0.009935 -0.086917 0.058827 -0.006536
+0.022104 -0.005013 0.003496 0.046663 -0.051061
+-0.036803 -0.067317 -0.007075 0.180870 -0.027434
+-0.025056 -0.039341 -0.073918 -0.003180 -0.110930
+-0.042711 0.005519 -0.035005 -0.088419 0.170942
+0.001503 -0.121485 0.066383 -0.067346 0.005643
+0.080088 -0.042562 -0.006668 -0.036538 0.020683
+0.042848 0.027852 -0.029088 -0.156468 0.006503
+0.037716 0.032082 0.038416 0.021835 -0.106963
+-0.043017 0.018166 0.070409 -0.005426 -0.035585
+-0.111071 -0.039986 0.050430 0.035157 0.066902
+-0.040684 0.060527 0.036225 0.002527 -0.015087
+0.059243 0.021268 -0.010682 -0.018434 0.059128
+0.111314 -0.054070 0.105744 -0.051476 -0.012970
+-0.000358 -0.099249 -0.077385 0.069924 -0.039101
+-0.072139 -0.049069 -0.088018 0.006144 0.000712
+0.081030 0.021987 -0.046031 0.058087 -0.001320
+-0.046851 -0.011062 0.108321 -0.001146 -0.071193
+0.044973 -0.002915 -0.003323 0.041735 0.094566
+0.053530 0.035927 0.100282 0.059082 -0.054059
+-0.012158 -0.035417 0.020412 -0.073193 0.059296
+-0.040489 -0.095250 -0.003821 -0.084904 0.053925
+0.109183 -0.005862 -0.036538 0.080962 -0.040647
+0.020070 0.057778 -0.020197 -0.079626 -0.003186
+-0.050855 0.128185 0.034731 0.057460 -0.035236
+-0.057096 -0.001238 0.122018 -0.071204 -0.047253
+-0.051767 0.048301 -0.052678 0.025990 -0.017481
+-0.029379 0.030738 0.047207 -0.047864 -0.033561
+0.029884 -0.091175 -0.085446 -0.026140 0.092628
+0.067706 -0.085617 0.081433 0.047305 0.031945
+-0.048728 -0.040387 0.046206 0.010578 -0.037639
+0.011328 -0.042458 -0.149597 0.033882 -0.061869
+0.008800 0.057754 -0.095876 0.038230 0.096876
+-0.033487 -0.141669 -0.014172 0.028439 -0.092764
+-0.053714 0.086926 0.034786 0.136053 -0.005569
+0.028753 0.009630 0.044114 -0.050365 -0.066224
+0.006017 0.014348 0.024471 0.000489 0.067234
+-0.021678 -0.118760 0.036349 -0.040295 0.076358
+-0.008444 -0.086082 -0.044018 -0.025804 0.028971
+-0.009233 0.053026 -0.035341 -0.182193 -0.102515
+0.089210 0.066812 0.032417 0.046882 -0.034815
+-0.052293 0.022814 0.129622 0.128232 -0.012105
+-0.087084 0.004762 0.086538 0.046566 0.098359
+-0.018713 0.039204 -0.021707 -0.060110 -0.117527
+-0.005459 0.060994 -0.057718 -0.021783 0.035154
+0.100557 -0.015470 -0.025818 0.008450 0.051535
+-0.001388 -0.114610 -0.057903 0.041862 0.061778
+0.045701 -0.078563 -0.070166 -0.048450 -0.088530
+0.021375 -0.004598 -0.090710 -0.009399 -0.073952
+-0.035575 -0.050280 0.114780 0.137866 0.065234
+0.003594 -0.066802 -0.144989 0.166201 0.039564
+-0.022457 -0.030090 0.016187 0.115443 -0.097331
+-0.019139 0.099440 0.002198 -0.030953 0.021099
+-0.045399 -0.046871 0.022533 -0.064657 0.005776
+0.049063 -0.028478 0.019268 0.054265 0.028042
+0.045559 -0.005541 -0.014410 -0.024165 -0.054976
+-0.073258 0.084205 0.036077 -0.068683 0.004708
+-0.085228 0.001234 0.046261 -0.050496 -0.028227
+-0.086828 -0.001218 0.021865 0.003791 -0.000568
+-0.088733 -0.040041 -0.035891 -0.054915 0.073463
+-0.132031 -0.012844 -0.068544 0.013052 0.087335
+0.038603 -0.115382 -0.010433 -0.007113 0.095126
+-0.047378 -0.081353 0.018021 -0.021156 -0.120774
+0.040038 0.007633 -0.088728 -0.009928 0.020142
+0.052024 -0.021063 -0.118121 0.102739 -0.055837
+0.005253 -0.061924 0.063680 -0.014512 -0.020259
+0.029493 -0.013435 -0.020638 0.089342 0.001092
+-0.046491 -0.145634 -0.083159 -0.158142 -0.279281
+0.003611 0.055863 -0.064655 -0.088773 0.089283
+-0.029619 -0.089949 0.017197 -0.066633 -0.052347
+0.090828 -0.087551 0.000338 0.085238 -0.005313
+0.096211 0.071381 -0.076546 -0.077927 -0.040864
+0.062936 0.041559 0.016235 -0.017513 0.014773
+-0.025734 0.028586 0.070292 0.055794 -0.026131
+-0.076954 -0.082228 0.043947 -0.035921 0.152668
+-0.049510 0.023159 0.008506 -0.044773 -0.160358
+0.024984 -0.025587 -0.071627 -0.038376 0.088478
+0.120568 0.046723 0.086731 0.000695 -0.015751
+-0.027837 -0.160937 -0.095031 0.036271 -0.009061
+-0.015078 -0.036281 -0.103665 -0.058258 -0.049573
+0.022021 0.108296 -0.002586 0.065655 -0.018584
+-0.046441 -0.031018 0.067350 0.014328 0.008860
+-0.000245 0.063400 -0.001810 0.043515 0.090344
+-0.063845 0.020485 0.079401 0.070558 -0.116428
+0.032628 0.068949 0.052238 -0.044530 0.096813
+0.029911 -0.008814 0.044352 -0.168172 0.009604
+0.055828 -0.100739 -0.026013 0.021193 -0.051425
+0.035891 -0.004085 0.030216 -0.060801 0.037202
+0.007262 0.120686 0.026846 0.058464 -0.100792
+-0.009176 0.027589 0.123957 -0.011283 -0.025744
+-0.105081 0.118244 -0.042122 -0.025404 0.000873
+-0.012703 0.084159 -0.067539 -0.140536 0.041637
+-0.014485 -0.043382 -0.048004 -0.075416 0.054401
+-0.018651 -0.032908 0.164231 -0.053236 0.033946
+-0.021681 -0.012655 -0.037049 -0.001613 -0.053393
+-0.014635 0.017954 -0.116115 -0.027232 0.034005
+-0.035376 0.026492 -0.037250 0.070733 0.074835
+-0.021378 -0.142980 0.123195 0.003699 0.025398
+0.015629 0.077370 0.032623 0.121580 0.097100
+0.000946 -0.056355 0.042065 0.008184 -0.081824
+-0.101937 0.065473 0.003360 0.069241 0.073002
+-0.053844 -0.044301 0.080351 -0.091833 0.044288
+0.007447 -0.120723 -0.013806 -0.023636 -0.064616
+0.030556 0.072630 0.074428 -0.087759 -0.026440
+0.064840 0.049162 0.091053 0.023891 0.033811
+-0.027746 0.116392 0.106126 -0.056644 -0.014781
+0.036137 -0.002632 0.055512 0.070077 0.067819
+-0.030625 0.053772 -0.078457 -0.021351 -0.113011
+0.052797 0.044875 -0.077269 -0.009867 0.101493
+0.073477 -0.024103 0.049145 -0.004706 -0.025211
+-0.053731 -0.049009 -0.035786 0.054430 0.046515
+0.025154 -0.043569 -0.034789 -0.058610 0.006931
+0.012049 0.046809 -0.129441 0.025541 -0.030933
+0.000297 -0.054058 0.179837 0.081515 0.004932
+-0.028445 -0.073753 0.010629 0.080042 0.098710
+-0.014017 0.057597 0.001010 0.071658 -0.067570
+0.074384 0.110366 -0.018121 -0.108754 0.037793
+0.028041 -0.047508 -0.031359 -0.098913 -0.036486
+-0.017311 -0.001279 -0.013694 0.051968 0.036512
+0.088201 0.031155 -0.043442 -0.065045 0.023486
+0.027000 0.104768 -0.015176 -0.038754 -0.004178
+0.003732 0.062166 0.085438 -0.077368 -0.101645
+-0.118347 0.007589 -0.056489 0.082268 0.020253
+-0.035623 0.034235 -0.099354 -0.061237 -0.024285
+0.005441 -0.039694 -0.025957 -0.004411 0.049903
+0.003040 0.036243 0.023552 -0.007334 0.128963
+-0.077727 -0.059175 -0.019437 -0.024872 0.004339
+0.084006 -0.076605 -0.102261 0.036714 -0.035205
+-0.007642 -0.005125 -0.030525 0.096390 -0.053138
+-0.002192 -0.024851 0.050645 0.041490 -0.043183
+0.046796 -0.050894 0.055023 0.133834 -0.024013
+0.000872 -0.057072 -0.000630 0.042070 -0.129339
+-0.064283 0.037836 -0.066393 0.004438 0.125379
+-0.062213 -0.067468 0.090177 -0.046094 -0.025725
+0.079101 -0.074909 -0.043730 -0.073483 0.069672
+-0.020413 -0.000079 -0.049725 -0.120751 -0.046980
+0.039894 0.072305 0.009798 0.005613 -0.045217
+0.006862 0.036285 0.074819 -0.006747 0.015144
+-0.071562 0.012324 -0.001082 0.014835 0.079960
+-0.027804 0.103358 -0.017203 0.014914 -0.056687
+0.030827 0.028076 0.003395 -0.073255 0.110310
+0.056498 -0.044893 0.110122 -0.109058 -0.052302
+-0.001604 -0.089977 -0.060548 0.107808 0.025463
+-0.070203 -0.000513 -0.123913 0.046247 -0.085392
+0.096343 0.095890 -0.064950 0.070363 0.034272
+0.037773 -0.076950 0.124858 -0.009008 -0.010115
+0.083868 0.051242 0.039149 0.015185 0.083375
+0.029773 -0.045961 0.100395 0.003743 -0.138294
+-0.041755 0.010806 0.057797 -0.147374 0.095858
+-0.009929 -0.103347 -0.032310 -0.110560 0.121377
+0.145244 0.017079 -0.080587 0.020516 -0.044939
+-0.010477 0.038347 -0.003466 -0.001618 0.019600
+-0.021762 0.125482 0.011074 0.065815 0.040298
+0.009202 -0.051686 0.129684 -0.131135 0.044536
+0.009313 0.102518 -0.075351 0.054338 0.020273
+-0.045753 0.031345 0.000407 -0.097294 -0.000416
+-0.007466 -0.044972 -0.078744 0.042414 0.066624
+0.030318 -0.067852 0.061416 -0.028992 0.056606
+0.004038 -0.036253 -0.014279 0.023123 -0.007832
+-0.000137 -0.027684 -0.127648 -0.007713 -0.008746
+-0.026500 0.049032 -0.183319 0.059107 0.066500
+0.016902 -0.093331 0.090129 0.016648 -0.083492
+-0.023669 -0.010473 0.027614 0.145068 0.000681
+0.044133 -0.035809 0.005668 -0.090461 -0.090732
+-0.033927 0.042997 0.021700 -0.046955 0.044487
+-0.026444 -0.061011 0.010110 -0.023804 0.030427
+-0.015195 -0.155603 -0.016584 0.021461 -0.003528
+-0.059784 0.032214 0.000847 -0.098859 -0.078980
+0.043188 0.066433 0.062309 0.144507 0.006865
+-0.068953 0.046698 0.099369 0.043354 -0.014309
+-0.033202 -0.002950 0.040734 0.083454 0.039319
+0.051358 0.006074 -0.073465 -0.090554 -0.120787
+-0.040676 0.092412 -0.085151 -0.021699 0.005813
+0.103135 0.024964 0.025832 -0.075982 0.035699
+-0.027310 -0.153007 0.036420 0.057600 0.081630
+0.001605 -0.054191 -0.033043 -0.014390 -0.071383
+0.036180 0.035860 -0.046980 0.038541 -0.044757
+-0.078032 -0.029878 0.078183 0.082251 0.010549
+0.053317 -0.038231 -0.065610 0.055798 0.037504
+0.076317 -0.027605 0.010349 0.095361 -0.088636
+0.049089 0.113316 0.051084 0.038589 0.034330
+-0.055948 -0.037217 -0.015418 -0.139976 0.036306
+0.039306 -0.009889 -0.044910 0.016559 -0.000050
+0.106073 0.015280 -0.002563 -0.109085 -0.048475
+-0.035319 0.163860 0.032981 -0.044932 0.003227
+-0.123233 -0.010638 0.055479 -0.003666 -0.072249
+-0.111158 0.065365 0.010691 0.039119 -0.001837
+-0.118729 0.061470 -0.002077 -0.033335 -0.060165
+-0.026081 -0.001806 -0.079616 -0.000075 0.080598
+0.032908 -0.035140 -0.003136 -0.029024 0.094622
+-0.075773 -0.022898 -0.014817 0.058393 -0.111505
+0.036794 -0.015760 -0.112602 0.030323 0.085897
+-0.020834 0.056079 -0.103762 0.117671 -0.041205
+0.041684 -0.084336 0.034186 0.011973 -0.006313
+0.040836 -0.035709 0.034170 0.122672 0.090973
+-0.053182 -0.059371 0.091017 -0.090998 -0.116986
+0.001405 0.138364 0.017107 -0.064076 0.103486
+-0.031142 -0.030068 0.046547 -0.133471 -0.042055
+0.140418 -0.125084 0.035218 -0.001162 -0.021130
+-0.012034 0.097413 -0.079006 -0.039030 -0.054011
+0.143887 0.078835 -0.000601 -0.021173 -0.039895
+-0.025050 0.075865 0.039221 0.032458 0.038206
+-0.038873 -0.085003 -0.032736 -0.026956 0.113525
+-0.023933 0.120794 -0.003862 -0.026459 -0.138724
+0.089559 0.029002 -0.052098 -0.085692 0.115174
+0.083497 0.024179 0.119021 -0.067541 0.019047
+-0.027720 -0.086083 -0.055329 0.020087 -0.027086
+-0.047858 -0.051975 -0.035205 -0.059342 -0.068582
+0.058936 0.044141 -0.080315 0.119744 -0.046518
+-0.064588 -0.027212 0.147823 0.032404 0.016690
+0.024302 0.085560 -0.001525 0.016469 0.038891
+-0.020146 0.019943 0.045067 0.038070 -0.086274
+-0.025769 0.044192 0.102141 -0.064765 0.055849
+0.048803 -0.030066 -0.009220 -0.116655 0.068295
+0.047580 -0.076138 -0.070307 0.047582 -0.111342
+0.004656 -0.004452 0.029703 -0.004259 0.011130
+0.014446 0.166086 0.059565 0.000985 -0.052607
+0.013251 0.094476 0.106216 0.016715 -0.025581
+-0.101244 0.072897 -0.114526 0.024681 0.010784
+-0.051759 0.032389 -0.050202 -0.083316 0.052334
+-0.035100 -0.116721 -0.110336 -0.053391 0.065541
+-0.029790 -0.020457 0.135285 -0.004142 0.111508
+-0.030936 0.018549 -0.016034 0.018572 -0.084336
+-0.048615 -0.018739 -0.096815 -0.090162 0.019410
+-0.040821 -0.009925 -0.097427 0.091891 0.031793
+-0.024598 -0.132848 0.078353 0.089339 -0.068562
+-0.020779 0.040974 -0.055675 0.169131 0.029649
+0.078165 -0.050679 -0.005881 -0.004983 -0.104324
+-0.069096 0.127960 0.011392 -0.000769 0.062168
+-0.079842 0.001606 0.089284 -0.035465 0.031075
+0.029519 -0.102956 -0.010902 -0.064030 -0.019669
+0.057492 0.075802 -0.008904 -0.060743 -0.053144
+0.005126 0.062980 0.085674 0.019895 0.104448
+-0.086473 0.056906 0.056795 -0.012940 0.036606
+-0.008604 -0.040450 0.042062 0.041810 0.027680
+-0.092256 0.091237 -0.039500 0.024761 -0.088978
+0.068585 0.088295 -0.048033 -0.017808 0.045370
+0.124600 -0.035320 0.056751 0.092751 0.054025
+-0.015725 -0.061938 0.036806 0.078768 -0.016065
+0.002444 -0.023887 -0.072177 -0.029790 -0.005860
+0.015478 0.129142 -0.091024 0.071482 -0.065445
+0.005867 -0.006051 0.098646 0.054089 0.018713
+0.033837 -0.008355 -0.051959 0.057440 0.160305
+-0.001863 0.016738 -0.033705 0.062233 -0.140759
+0.027342 0.060074 0.030362 -0.117875 0.061020
+-0.028026 -0.088238 -0.003782 -0.146288 -0.080395
+0.050048 0.036136 0.019500 0.066902 0.020355
+0.024817 -0.056254 -0.140918 -0.085803 0.020540
+-0.003730 0.161411 -0.049408 0.000219 -0.002348
+-0.055021 0.067820 0.126483 -0.031063 -0.119299
+-0.102834 0.001133 0.010172 0.107707 -0.029106
+-0.059813 0.036698 -0.021720 -0.043189 -0.002270
+-0.031694 0.009605 -0.022459 -0.036417 0.053675
+0.061561 -0.012723 0.050040 -0.029450 0.131044
+-0.124516 -0.107579 -0.012171 0.011761 0.002599
+0.016327 -0.060854 -0.080910 0.030875 -0.002997
+-0.020970 -0.011880 -0.086096 0.037912 0.012421
+0.055253 -0.007250 0.041740 0.055596 -0.024420
+-0.017564 -0.079202 0.008897 0.180091 0.054490
+0.001772 -0.022151 -0.082048 -0.010559 -0.163377
+-0.020660 -0.017827 -0.030800 -0.045856 0.122405
+-0.052946 -0.130490 0.097383 -0.116737 0.039855
+0.056504 -0.059549 -0.059931 -0.018658 0.034898
+0.054889 0.005373 -0.066796 -0.127360 0.047960
+0.071746 0.027410 -0.006212 0.024132 -0.094062
+0.005369 -0.008926 0.073085 -0.014265 -0.029204
+-0.100025 -0.072076 0.014651 0.069368 0.048275
+-0.066823 0.086074 0.014921 -0.015395 -0.045138
+0.026224 0.000902 -0.038208 -0.035221 0.057397
+0.097606 -0.073195 0.051626 -0.033488 0.027813
+0.002070 -0.097510 -0.057877 0.126680 -0.082194
+-0.072597 0.006014 -0.093185 -0.016853 -0.022790
+0.138461 0.005394 -0.056485 0.102778 0.028918
+-0.045604 -0.060041 0.121251 0.029260 -0.101404
+0.061194 0.033039 -0.016798 0.064263 0.065144
+0.010925 0.023151 0.107623 0.027977 -0.090356
+-0.024863 -0.006440 0.047870 -0.047486 0.088211
+-0.012139 -0.116121 -0.000525 -0.140961 0.016604
+0.063490 -0.022732 -0.046944 0.066970 -0.068838
+0.016143 0.026202 -0.043344 -0.064881 0.024877
+-0.072845 0.120531 0.077901 0.047272 0.011713
+-0.044646 0.040932 0.076164 -0.101233 -0.029615
+-0.065118 0.050966 -0.023273 0.053517 0.023710
+-0.007489 0.035822 0.023439 -0.055528 -0.004033
+-0.007662 -0.096546 -0.081662 0.037141 0.137562
+0.075526 -0.097496 0.123990 0.013996 0.087005
+-0.019788 -0.082043 0.020524 0.007027 -0.021537
+-0.036264 -0.090952 -0.177722 -0.009306 -0.031473
+-0.009287 0.047557 -0.090241 0.089347 0.056375
+-0.005506 -0.112128 0.004356 0.064421 -0.038478
+-0.035674 0.040616 0.007731 0.160236 -0.054199
+-0.007537 0.012434 0.022001 -0.021567 -0.075163
+-0.026053 0.015909 0.041015 0.021832 0.034152
+-0.048539 -0.086655 0.047465 0.000682 0.042640
+0.023697 -0.095971 -0.022874 -0.000369 0.003413
+0.046005 0.064807 0.010131 -0.129517 -0.092254
+0.116469 0.053796 0.038110 0.094470 0.018435
+-0.034803 0.073591 0.108348 0.104096 0.049884
+-0.021274 0.022097 0.065347 0.065555 0.089319
+0.000474 -0.004186 -0.040493 -0.065543 -0.083167
+-0.017425 0.049177 -0.044248 0.008399 0.068180
+0.154778 0.027549 -0.008012 0.014950 0.043254
+0.039599 -0.136415 -0.018716 0.061900 0.031263
+0.058118 -0.037200 -0.114692 -0.080876 -0.053238
+0.077436 0.015015 -0.092517 0.005804 -0.065541
+-0.005653 -0.073184 0.095594 0.082470 0.060989
+-0.000262 -0.035766 -0.083441 0.122634 0.088429
+-0.014397 -0.055434 -0.005659 0.069697 -0.064892
+0.008824 0.082498 0.051866 -0.036070 0.033403
+-0.082855 -0.087376 0.002714 -0.097121 -0.019170
+0.027179 -0.069870 -0.009316 0.047450 0.040657
+0.060527 0.004620 -0.040264 -0.051228 -0.029023
+-0.071384 0.101421 0.009538 -0.099185 0.060100
+-0.048395 -0.024677 0.025125 -0.056043 -0.058045
+-0.054059 0.008107 0.021078 0.045290 -0.018459
+-0.113359 0.014009 -0.006826 -0.052747 0.046922
+-0.075976 0.008538 -0.084411 -0.004369 0.045801
+0.075392 -0.067340 0.014454 0.032407 0.092478
+-0.061859 -0.083458 0.051442 0.031695 -0.080233
+0.054028 0.027000 -0.073549 0.032300 0.036501
+-0.011384 -0.020780 -0.124142 0.093905 -0.028332
+0.039139 -0.030944 0.079952 -0.001717 0.013976
+0.038005 -0.001751 -0.044097 0.129827 0.014385
+-0.001682 -0.063458 -0.002511 -0.078150 -0.141236
+0.021955 0.104851 -0.093246 -0.060019 0.069998
+0.004399 -0.096408 0.059327 -0.062268 -0.074327
+0.108063 -0.090534 -0.045654 0.048119 0.049187
+0.042105 0.043964 -0.091516 -0.047999 -0.028881
+0.070471 0.055401 -0.025605 0.011176 0.008475
+0.022254 0.038266 0.048106 0.047176 -0.017967
+-0.010978 -0.088762 0.034806 0.019311 0.126815
+-0.010571 0.053073 0.032162 -0.000780 -0.152200
+-0.014253 -0.021954 -0.131040 -0.061376 0.113838
+0.060725 0.020201 0.102533 -0.011392 -0.052046
+-0.069625 -0.091011 -0.097954 0.067847 0.017856
+-0.053461 -0.040679 -0.121664 -0.077208 -0.106919
+0.057996 0.069756 -0.012433 0.069569 -0.055159
+-0.024801 -0.060448 0.101700 0.014619 0.036580
+-0.004526 0.093977 -0.028211 0.045261 0.149736
+-0.014691 -0.007959 0.097708 0.107128 -0.079723
+0.029157 0.020116 0.104828 -0.064208 0.119172
+0.039583 -0.029446 0.006628 -0.110398 0.004062
+0.048132 -0.060601 0.009448 0.051777 -0.053127
+0.050551 -0.001924 0.028079 -0.050618 -0.013698
+0.001920 0.088162 0.073078 0.085795 -0.066788
+0.014025 0.042699 0.176241 -0.046674 -0.034822
+-0.051433 0.121729 -0.057076 0.023901 0.045075
+-0.057182 0.054780 -0.017280 -0.146674 0.002090
+-0.016223 -0.044841 -0.084524 -0.152479 0.072688
+-0.006962 0.008711 0.127455 -0.003876 0.053162
+-0.013682 -0.025386 -0.000427 -0.024811 -0.024474
+-0.056267 0.062116 -0.121311 -0.053011 0.065651
+-0.075385 -0.008680 -0.063033 0.083039 0.110577
+-0.000152 -0.127017 0.055904 0.013659 0.005664
+-0.002852 0.047248 0.001128 0.100773 0.037274
+0.026368 -0.042205 0.021887 -0.020247 -0.056678
+-0.077475 0.089799 0.058003 0.039741 0.106663
+-0.016853 -0.015972 0.075741 -0.048829 0.015374
+-0.032657 -0.125677 -0.062060 -0.057409 -0.061287
+0.073151 0.050357 0.053547 -0.059886 -0.051298
+0.057954 -0.003817 0.076028 0.006757 0.061109
+-0.038030 0.143209 0.092207 -0.018493 0.062291
+0.005751 -0.036449 0.067582 0.031449 0.101894
+-0.080754 0.011515 -0.049485 -0.016137 -0.087818
+0.108851 0.038222 -0.099315 -0.003117 0.052278
+0.107517 -0.036233 0.065370 0.040409 -0.057029
+-0.033167 -0.081758 -0.019502 0.033438 0.013365
+-0.017760 -0.025906 -0.020244 -0.078722 -0.011697
+-0.028246 0.068647 -0.106417 0.026956 -0.064914
+0.062711 -0.017857 0.151539 0.044613 -0.017820
+0.009085 -0.032785 -0.025795 0.075790 0.075667
+-0.040398 0.058556 -0.042634 0.093973 -0.099529
+0.057103 0.073562 0.012640 -0.066141 0.029558
+0.060219 -0.083699 -0.054799 -0.120442 -0.000374
+0.006521 0.034512 -0.039558 0.042191 0.033865
+0.103992 -0.014977 -0.077384 -0.051340 0.001873
+0.047451 0.140612 -0.024885 -0.021420 -0.046604
+0.030606 0.100660 0.076356 -0.019288 -0.098570
+-0.114463 -0.010855 -0.034657 0.025618 -0.003356
+-0.087913 0.064346 -0.075540 -0.091569 -0.024965
+-0.021232 -0.017255 -0.056931 -0.003104 0.030219
+-0.020112 -0.012334 0.035298 0.001405 0.161753
+-0.064618 -0.064401 -0.007218 -0.000120 -0.047208
+0.116105 -0.056464 -0.069645 -0.007032 -0.012090
+-0.023237 0.016000 -0.039802 0.074319 -0.012604
+0.014863 -0.058081 0.093219 0.062253 -0.040302
+0.027405 -0.128683 0.039923 0.116808 -0.011706
+0.012483 -0.017698 0.003645 -0.007588 -0.120662
+-0.032868 0.066217 -0.031343 -0.034166 0.146334
+-0.031228 -0.125921 0.117756 -0.042686 -0.062094
+0.049375 -0.112262 0.010166 -0.073599 0.048690
+0.028292 0.020076 -0.062865 -0.106114 -0.025300
+0.066916 0.029279 0.028191 -0.003599 -0.040614
+0.020491 0.060238 0.052747 -0.010390 -0.022389
+-0.063358 -0.028707 0.035907 -0.011898 0.079703
+-0.003758 0.078051 -0.017869 0.009045 -0.018982
+0.034974 0.069405 -0.018909 -0.038613 0.083909
+0.033935 -0.036607 0.088891 -0.052599 -0.059839
+0.052758 -0.068308 -0.063615 0.126093 -0.009460
+-0.042175 -0.011113 -0.073071 0.052086 -0.052619
+0.049226 0.066898 -0.045666 0.117923 0.053656
+-0.010739 -0.043962 0.141903 0.001792 -0.035469
+0.090671 0.043993 -0.013655 0.018989 0.127223
+0.001030 -0.001154 0.081839 -0.024979 -0.103704
+-0.077920 0.036083 0.068220 -0.062210 0.113730
+-0.010501 -0.065801 0.050885 -0.104304 0.121937
+0.111850 0.009680 -0.011791 0.001677 -0.035029
+0.010677 0.024572 -0.012860 -0.030323 -0.010466
+0.011279 0.167752 0.003136 0.109709 0.007292
+0.000987 0.004572 0.108706 -0.113192 -0.012431
+-0.015225 0.073653 -0.051275 0.077928 -0.012752
+-0.011708 0.014172 0.025162 -0.095378 0.026382
+-0.028889 -0.058569 -0.129329 0.011087 0.061452
+0.056893 -0.058004 0.103586 -0.060752 0.081824
+-0.042805 -0.015991 -0.024444 0.028952 -0.013528
+0.042851 0.019988 -0.165741 -0.031012 -0.014713
+-0.026059 0.031698 -0.134343 0.032090 0.020828
+0.051674 -0.128006 0.050856 0.022220 -0.073513
+-0.009340 0.013756 0.036163 0.098407 -0.023495
+0.023858 0.008121 0.022220 -0.103489 -0.046663
+-0.033000 0.063565 0.029224 -0.012693 0.084202
+0.012187 -0.051000 0.026126 -0.043293 0.008675
+-0.019812 -0.165070 -0.014555 -0.047431 0.017990
+-0.040073 0.107192 0.022228 -0.089023 -0.066885
+0.014630 0.073186 0.069902 0.072634 0.019593
+-0.041539 0.031788 0.092310 0.027223 0.034027
+-0.051855 0.000391 0.007869 0.131910 0.069384
+0.046276 0.040440 -0.037093 -0.031393 -0.112828
+0.015709 0.096749 -0.103205 -0.021284 0.011405
+0.158287 -0.021028 0.042219 -0.050759 0.069715
+-0.042907 -0.116980 0.014224 0.094648 0.028395
+0.041535 -0.057033 -0.047607 -0.024419 -0.034905
+0.010125 0.036728 -0.052503 -0.001839 -0.033477
+-0.053414 -0.070394 0.092895 0.100600 -0.026352
+0.080574 -0.028763 -0.059548 0.094571 0.091787
+0.041437 0.014312 0.045792 0.108269 -0.081586
+0.056288 0.137447 0.054718 -0.032474 0.054502
+-0.100144 -0.006460 0.024739 -0.117043 -0.008919
+0.070299 -0.036862 -0.014543 0.024500 -0.015222
+0.114975 -0.043705 0.000421 -0.061872 -0.035148
+-0.022797 0.128575 -0.031798 -0.086718 -0.007172
+-0.071706 -0.006833 0.028645 -0.007011 -0.096745
+-0.142269 0.027996 0.065210 0.061381 0.000741
+-0.140531 0.017480 -0.014986 -0.040893 -0.012718
+-0.012494 -0.021869 -0.032923 0.016456 0.104475
+0.010792 -0.066178 0.019097 -0.001893 0.067513
+-0.092673 -0.059851 -0.045936 0.052642 -0.062500
+0.065013 -0.025659 -0.149301 0.051705 0.035692
+-0.045790 -0.007482 -0.069141 0.149365 -0.042039
+0.018492 -0.081315 0.055880 0.058158 0.019669
+0.063836 -0.012391 0.007057 0.155454 0.033854
+-0.016532 -0.007661 0.043113 -0.080283 -0.108670
+-0.029344 0.093781 -0.015840 -0.068134 0.091804
+0.004148 -0.058507 0.059633 -0.095883 -0.004939
+0.086151 -0.113571 -0.019466 -0.009167 0.003662
diff --git a/gr-vocoder/lib/codec2/codebook/lspvqanssi1.txt 
b/gr-vocoder/lib/codec2/codebook/lspvqanssi1.txt
new file mode 100644
index 0000000..0b9dd90
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspvqanssi1.txt
@@ -0,0 +1,257 @@
+10 256
+0.5862 0.7213 0.9146 1.0909 1.2910 1.4954 1.8370 2.0840 2.3771 2.5518
+0.0871 0.2049 0.5849 0.8552 1.2096 1.4686 1.8210 2.0926 2.4508 2.7389
+0.2274 0.3126 0.6088 0.8338 1.1824 1.5948 1.8228 1.9856 2.1832 2.4793
+0.1827 0.2706 0.5842 0.7761 1.0301 1.2462 1.6313 1.9786 2.3479 2.6790
+0.3055 0.3863 0.7194 1.1609 1.3303 1.5017 1.7265 1.9412 2.4659 2.6315
+0.1794 0.2522 0.5477 0.7892 1.3887 1.7101 1.9471 2.1667 2.4361 2.6310
+0.1825 0.2729 0.4185 0.6024 1.2531 1.7291 1.9937 2.1849 2.5865 2.7748
+0.3219 0.4045 0.7357 1.2708 1.4626 1.6439 1.9388 2.1212 2.5005 2.6749
+0.2234 0.3496 0.5054 0.6981 0.8672 1.0431 1.7091 2.0690 2.3290 2.6195
+0.3009 0.3957 0.7576 0.9751 1.1955 1.7727 2.0383 2.2474 2.5612 2.7188
+0.3841 0.5544 0.9209 1.1811 1.5441 1.8126 2.1175 2.3192 2.5486 2.6935
+0.2153 0.3105 0.5597 0.8313 1.2168 1.4512 1.7012 1.8962 2.3893 2.5852
+0.3196 0.4814 0.7629 1.0869 1.5517 1.7780 2.0462 2.2547 2.5023 2.6706
+0.1964 0.3055 0.4307 0.7178 1.4260 1.6240 1.8392 2.0576 2.2976 2.5492
+0.4260 0.6888 1.2019 1.4194 1.6437 1.8221 2.0469 2.2508 2.5142 2.6795
+0.3004 0.3944 0.5847 1.0050 1.1812 1.3559 1.5479 1.7847 2.4924 2.6703
+0.1595 0.2398 0.4336 0.9228 1.2602 1.5064 1.7915 1.9840 2.2320 2.5692
+0.1832 0.2985 0.4205 0.5980 0.7620 0.9894 1.7499 2.1151 2.4814 2.7214
+0.2234 0.3207 0.5457 0.9799 1.2074 1.7079 1.9734 2.1742 2.4575 2.6366
+0.3598 0.4819 0.6385 0.8878 1.3226 1.4910 1.7257 1.9456 2.2061 2.4579
+0.4671 0.5911 0.8513 1.0923 1.5104 1.7043 1.9727 2.1839 2.4484 2.6111
+0.2418 0.3937 0.5420 0.8971 1.1152 1.3054 1.7928 1.9796 2.5441 2.7572
+0.3541 0.4730 0.6546 0.9063 1.0792 1.2743 1.8545 2.0555 2.3083 2.5404
+0.3121 0.4016 0.7137 0.8835 1.0736 1.5907 1.8624 2.0857 2.5075 2.6668
+0.2232 0.3631 0.5273 0.7438 1.0492 1.2235 1.5449 2.2198 2.5160 2.6852
+0.2557 0.3528 0.5051 0.6528 0.8351 1.5688 1.8838 2.1056 2.4401 2.6111
+0.4342 0.5318 0.9234 1.1146 1.3015 1.5198 1.8211 2.0340 2.3694 2.5506
+0.4310 0.5269 0.7431 0.9018 1.0734 1.5196 1.8267 2.0244 2.4508 2.6177
+0.2150 0.3249 0.4966 0.9434 1.1627 1.3497 1.8003 2.0045 2.3567 2.5909
+0.2798 0.4111 0.5786 0.7971 1.0414 1.2142 1.6947 2.0866 2.3351 2.5545
+0.1688 0.2693 0.4004 0.6337 1.3058 1.5064 1.7535 1.9689 2.5542 2.7424
+0.4419 0.6209 1.0127 1.2135 1.4104 1.6111 1.8820 2.1005 2.4238 2.5966
+0.3645 0.5120 0.8977 1.2209 1.5286 1.7204 1.9787 2.1779 2.4390 2.6114
+0.2897 0.4136 0.5504 0.8515 1.2641 1.4334 1.8079 2.0656 2.3509 2.7593
+0.1611 0.4723 0.7420 1.0071 1.2571 1.5891 1.9224 2.2345 2.5647 2.7991
+0.2528 0.4178 0.8909 1.3117 1.6622 1.8641 2.1017 2.2974 2.5299 2.6982
+0.1749 0.2700 0.4116 0.6036 1.1430 1.7776 2.0394 2.2220 2.4667 2.6598
+0.3451 0.4325 0.6194 0.7406 0.9176 1.5540 1.8426 2.0479 2.4401 2.5965
+0.3672 0.5164 0.6558 0.8441 1.2332 1.4114 1.6955 2.0875 2.3674 2.5471
+0.2194 0.3467 0.7384 1.1079 1.5398 1.8437 2.1212 2.3296 2.5800 2.7403
+0.1525 0.2343 0.3915 0.6843 1.0517 1.5020 1.7905 1.9667 2.2027 2.6725
+0.3531 0.5908 0.7462 0.9441 1.2774 1.4743 1.8268 2.1059 2.4478 2.6484
+0.3611 0.4981 0.7598 0.9676 1.4024 1.6330 1.9094 2.1433 2.4408 2.6130
+0.2153 0.3366 0.4974 0.6693 1.1944 1.6791 1.9002 2.1105 2.4100 2.5922
+0.2421 0.3392 0.5123 0.9818 1.5411 1.7092 1.9989 2.1981 2.5659 2.7656
+0.2116 0.3250 0.4845 0.8021 1.0088 1.2158 1.8038 2.0223 2.2975 2.5810
+0.1902 0.2942 0.8003 1.1086 1.3606 1.6008 1.8956 2.1328 2.4481 2.6405
+0.2772 0.3914 0.5826 0.7654 0.9495 1.1240 1.3949 2.0411 2.3891 2.5959
+0.2678 0.5220 0.7630 1.1000 1.3747 1.6432 1.9391 2.2237 2.5511 2.7893
+0.3200 0.4245 0.6174 0.9904 1.1662 1.3882 1.7601 1.9524 2.3998 2.5819
+0.1702 0.4871 0.8370 1.0989 1.3593 1.5830 1.8750 2.1277 2.4666 2.6885
+0.2280 0.3748 0.6554 0.9113 1.2081 1.4619 1.8181 2.0541 2.3791 2.5701
+0.1752 0.4363 0.6454 0.8798 1.1079 1.5367 1.8667 2.1716 2.4804 2.7249
+0.3804 0.4700 0.8224 1.0099 1.1892 1.5906 1.8879 2.0907 2.4544 2.6238
+0.1808 0.2910 0.4683 0.7059 0.8980 1.4031 1.7063 1.9444 2.4658 2.6776
+0.2418 0.3803 0.5443 0.7589 1.1496 1.3185 1.5451 1.7433 2.1310 2.6523
+0.2698 0.3690 0.5362 1.0732 1.2921 1.4696 1.7440 1.9470 2.5051 2.6841
+0.4099 0.5102 0.6983 1.0468 1.2459 1.4185 1.8851 2.0815 2.3464 2.5605
+0.0669 0.1354 0.3764 0.8433 1.1719 1.4834 1.8181 2.1312 2.4626 2.8044
+0.1614 0.2372 0.3878 0.5708 1.2759 1.4950 1.8052 2.0807 2.3485 2.6293
+0.1688 0.2875 0.4301 0.9059 1.2361 1.4054 1.8057 1.9924 2.5589 2.7495
+0.2864 0.3783 0.7032 1.0817 1.2382 1.5741 1.8619 2.0656 2.5139 2.6848
+0.3829 0.4781 0.6766 0.8340 1.0056 1.4147 1.6650 1.8840 2.3922 2.5619
+0.3259 0.4187 0.6139 0.7338 1.1831 1.6497 1.9000 2.1278 2.4322 2.5930
+0.2569 0.3790 0.5426 0.8390 0.9871 1.4850 1.8652 2.0732 2.4314 2.6005
+0.1408 0.2283 0.4024 0.8784 1.1485 1.4003 1.7004 1.9205 2.3723 2.6522
+0.2971 0.5039 0.8005 1.1212 1.4232 1.7801 2.1255 2.3907 2.6795 2.8487
+0.1515 0.2344 0.4684 0.8040 1.0401 1.3774 1.8329 2.1235 2.5555 2.7770
+0.5778 0.7157 0.8910 1.0966 1.4235 1.6482 1.9551 2.1831 2.4572 2.6234
+0.3017 0.4161 0.8088 0.9971 1.2000 1.4419 1.7867 2.0224 2.3473 2.5400
+0.1208 0.2814 0.6564 0.9448 1.2377 1.5663 1.9084 2.2112 2.5583 2.8155
+0.2127 0.3127 0.4635 0.6416 0.8449 1.6652 2.0577 2.2656 2.5811 2.7434
+0.1942 0.3011 0.4212 0.6901 1.5369 1.7639 1.9608 2.1766 2.4435 2.6663
+0.3510 0.4345 0.7146 0.9086 1.0678 1.2579 1.4425 2.0265 2.4574 2.6252
+0.3225 0.4323 0.6168 0.8580 1.5388 1.7910 1.9927 2.2013 2.4494 2.6160
+0.2271 0.4488 0.6287 0.7857 1.2086 1.3830 1.6194 2.1955 2.5236 2.6945
+0.2568 0.3510 0.5613 1.0500 1.2521 1.4359 1.6995 1.9187 2.2148 2.4275
+0.2933 0.3941 0.6128 0.8899 1.0720 1.2862 1.5331 1.8301 2.1553 2.3865
+0.3480 0.4626 0.6009 0.7630 0.9044 1.1225 1.8539 2.1845 2.5035 2.7091
+0.1337 0.4722 0.8099 1.1273 1.4252 1.6990 2.0188 2.2922 2.6018 2.8168
+0.1138 0.3263 0.8059 1.0473 1.3262 1.6202 1.9439 2.2007 2.5347 2.7702
+0.1979 0.3130 0.4635 0.8504 1.1143 1.3221 2.0371 2.2421 2.5406 2.7491
+0.3321 0.4194 0.8239 1.0458 1.1981 1.3733 1.5661 1.9985 2.3747 2.5416
+0.3729 0.5958 0.9551 1.2650 1.5484 1.9255 2.2256 2.4809 2.7276 2.8935
+0.1664 0.2516 0.5347 0.7545 1.1971 1.4089 1.7400 2.0871 2.4098 2.6795
+0.2370 0.3178 0.6123 1.3315 1.5470 1.7257 2.0063 2.1977 2.5449 2.7252
+0.2030 0.3328 0.4766 0.7357 1.2780 1.4439 1.7229 1.9405 2.2278 2.6816
+0.1702 0.2919 0.4598 0.7123 0.9077 1.1450 1.8632 2.0806 2.4990 2.7100
+0.2421 0.3578 0.5400 0.7217 0.8971 1.4898 1.8518 2.1205 2.6077 2.7894
+0.3030 0.3935 0.5812 0.7404 0.9425 1.8342 2.0887 2.2811 2.5596 2.7118
+0.1322 0.1997 0.3466 0.6981 1.1811 1.4849 1.8594 2.1114 2.4708 2.7804
+0.2317 0.3069 0.6860 1.4306 1.7121 1.8671 2.1249 2.2995 2.5705 2.7456
+0.3778 0.4863 0.6639 0.9163 1.1560 1.3186 1.5389 1.7169 2.1603 2.5797
+0.2118 0.3499 0.5259 0.7200 1.1348 1.3140 1.5657 2.0241 2.2873 2.5184
+0.2902 0.4368 0.6331 0.8971 1.3102 1.5219 1.8674 2.1512 2.4708 2.6809
+0.1418 0.3988 0.6251 0.8544 1.1268 1.3964 1.7585 2.0322 2.3964 2.6928
+0.2314 0.3462 0.7282 0.9211 1.1766 1.4941 1.7368 1.9546 2.5170 2.7066
+0.2076 0.3251 0.7423 0.9590 1.1936 1.5329 1.8887 2.1588 2.4667 2.6709
+0.2058 0.4139 0.5745 0.7832 0.9595 1.1688 1.7561 1.9562 2.4840 2.7001
+0.1834 0.2971 0.4643 0.6625 0.8802 1.1137 1.5183 1.8417 2.3842 2.7042
+0.1688 0.4218 0.7070 1.0465 1.4496 1.6953 1.9560 2.2174 2.5172 2.7404
+0.2323 0.3981 0.5489 0.7227 1.2886 1.5221 1.7158 2.1184 2.4066 2.5898
+0.3470 0.5265 0.8140 1.0152 1.3206 1.5411 1.8490 2.0588 2.3556 2.5393
+0.1707 0.2595 0.6762 0.9037 1.2781 1.4903 1.7946 2.0610 2.3741 2.5771
+0.1457 0.2318 0.6039 1.0078 1.3461 1.5908 1.8818 2.1248 2.4432 2.6714
+0.6574 0.8086 1.0243 1.2183 1.4837 1.7129 2.0197 2.2464 2.5059 2.6716
+0.2546 0.4983 0.8674 1.2536 1.6704 1.9529 2.2134 2.4319 2.6532 2.8109
+0.2455 0.3379 0.4632 0.8635 1.5286 1.8047 1.9909 2.1806 2.4031 2.5729
+0.4772 0.6742 1.0000 1.2474 1.5288 1.7415 2.0102 2.2168 2.4770 2.6449
+0.3357 0.4382 0.6033 1.1317 1.3681 1.5576 1.9251 2.1119 2.5548 2.7395
+0.2588 0.7015 0.8953 1.0830 1.2828 1.5160 1.8965 2.1921 2.5150 2.7258
+0.2466 0.3512 0.5047 0.6646 0.8161 1.2577 1.8046 2.0214 2.4447 2.6491
+0.1631 0.2283 0.4070 0.5955 1.1126 1.3894 1.8978 2.1849 2.5384 2.7382
+0.3424 0.4748 0.6222 0.8020 0.9706 1.1568 1.7044 1.9297 2.2127 2.5627
+0.2088 0.5143 0.7400 0.9277 1.1032 1.3561 1.8841 2.2004 2.5882 2.7993
+0.2016 0.3488 0.5894 0.7419 1.1488 1.3626 1.5566 1.9694 2.5488 2.7209
+0.2558 0.3914 0.5360 0.7521 1.4330 1.6955 1.8886 2.1428 2.4190 2.5966
+0.4021 0.5034 0.6653 0.8123 0.9586 1.2825 1.9184 2.1120 2.4090 2.5970
+0.2343 0.4800 0.6934 0.8523 1.2786 1.4763 1.7235 2.0400 2.3602 2.5562
+0.2460 0.3687 0.5325 0.7044 1.1488 1.3608 1.8112 2.0757 2.4183 2.6630
+0.1616 0.3644 0.5725 0.9166 1.2481 1.4938 1.8388 2.1175 2.4712 2.7464
+0.3760 0.4841 0.6350 1.0082 1.2110 1.4003 1.8127 2.0018 2.5199 2.7238
+0.1988 0.2824 0.6553 1.0337 1.5413 1.7369 1.9751 2.1751 2.4372 2.6265
+0.2728 0.4094 0.7498 1.0645 1.3516 1.5946 1.9910 2.2172 2.4830 2.6614
+0.1657 0.5327 0.7281 0.9966 1.2385 1.4629 1.8119 2.0973 2.4469 2.6979
+0.1413 0.2098 0.3540 0.5492 0.8486 1.1288 1.6320 1.9056 2.2805 2.5438
+0.2856 0.3666 0.6259 1.1424 1.6605 1.8197 2.0147 2.1986 2.4121 2.5919
+0.2725 0.4829 0.7650 1.0119 1.2977 1.5488 1.8755 2.1155 2.4383 2.6377
+0.2736 0.3804 0.5537 1.0258 1.2269 1.4186 1.9718 2.1468 2.5665 2.7689
+0.2341 0.5953 1.1030 1.4549 1.7361 1.9758 2.2126 2.4213 2.6405 2.8181
+0.2273 0.4638 0.6228 0.8500 1.1016 1.2823 1.7094 1.9523 2.2669 2.7029
+0.2438 0.3798 0.7299 0.9600 1.3765 1.6104 1.8644 2.1161 2.5073 2.7137
+0.1551 0.4869 0.8676 1.2274 1.5069 1.8857 2.1868 2.4411 2.7106 2.8767
+0.2746 0.5454 0.7589 0.9458 1.1597 1.3349 1.6653 2.1142 2.4356 2.6239
+0.1793 0.2646 0.4344 0.7482 1.1502 1.3733 1.8558 2.0817 2.3248 2.5171
+0.2698 0.4202 0.5765 0.8301 1.0073 1.2101 1.9714 2.2051 2.5138 2.7395
+0.1929 0.3091 0.4460 0.6266 1.1805 1.3672 1.5990 2.1514 2.4729 2.6468
+0.1901 0.3047 0.4607 1.1019 1.3168 1.5343 1.9234 2.1365 2.5924 2.7807
+0.3139 0.5009 0.6700 0.8268 1.0117 1.1810 1.6539 2.1984 2.4828 2.6576
+0.1403 0.2173 0.4117 0.7302 1.0038 1.2732 1.7392 2.0337 2.3809 2.7386
+0.4166 0.5101 0.7449 1.1663 1.3492 1.5543 1.9000 2.0941 2.4588 2.6365
+0.3342 0.4335 0.6160 0.8559 1.0112 1.2097 1.4029 1.6361 2.4129 2.6324
+0.4543 0.6159 0.7932 0.9843 1.2562 1.4308 1.7116 1.9919 2.2671 2.4631
+0.2153 0.3609 0.5302 0.7089 0.8756 1.0376 1.6496 2.2826 2.5680 2.7441
+0.4380 0.6439 0.8282 1.0651 1.3650 1.5829 1.8838 2.1005 2.4006 2.5771
+0.2523 0.3636 0.5879 1.1628 1.3542 1.6756 2.0488 2.2543 2.6093 2.7953
+0.4179 0.5426 0.7065 0.8996 1.0684 1.3146 1.9705 2.2021 2.5051 2.7061
+0.1659 0.2860 0.6693 0.9229 1.3959 1.6544 1.9709 2.2257 2.5236 2.7460
+0.2540 0.4356 0.5946 0.7627 1.2274 1.4222 1.6573 1.9601 2.2514 2.4711
+0.1633 0.2337 0.3698 0.5421 1.1757 1.5916 2.1561 2.3371 2.5534 2.7737
+0.1953 0.2730 0.4521 1.2005 1.7062 1.8627 2.1313 2.3266 2.5906 2.7667
+0.3053 0.4054 0.5651 0.7470 0.8910 1.1720 1.8864 2.1074 2.3705 2.5744
+0.1761 0.3033 0.6501 0.8268 1.0369 1.2687 1.8534 2.1889 2.5074 2.7339
+0.2265 0.3990 1.1359 1.4137 1.6839 1.8912 2.0948 2.3042 2.5489 2.7234
+0.3326 0.5400 0.8711 1.0948 1.3752 1.6155 1.9360 2.1537 2.4451 2.6133
+0.2162 0.3522 0.5309 0.7470 0.9677 1.1747 1.5056 1.7942 2.1615 2.4800
+0.1872 0.2761 0.4053 0.7469 1.5858 1.8945 2.1198 2.3197 2.5819 2.7758
+0.5381 0.8651 1.2695 1.4918 1.7774 1.9696 2.1865 2.3687 2.5739 2.7158
+0.2663 0.3422 0.6098 1.2120 1.4516 1.6092 1.8506 2.0376 2.2929 2.5088
+0.1904 0.3051 0.5663 0.7391 1.1589 1.5705 1.8756 2.1653 2.5518 2.7693
+0.1543 0.3519 0.6976 1.0664 1.3696 1.7817 2.1308 2.4259 2.7070 2.8753
+0.3304 0.4283 0.5942 0.7425 0.8906 1.4067 2.0676 2.2460 2.5394 2.7006
+0.2080 0.3215 0.6278 0.7882 1.3123 1.5592 1.8048 2.0831 2.4303 2.6266
+0.1188 0.2481 0.8270 1.2420 1.5824 1.8976 2.1816 2.4248 2.6645 2.8459
+0.0635 0.1528 0.5973 0.9377 1.2653 1.5465 1.8818 2.1681 2.5089 2.7924
+0.3249 0.5179 0.9143 1.2973 1.4966 1.7550 2.0715 2.3166 2.6500 2.8305
+0.1918 0.3107 0.4506 0.6994 1.3463 1.5348 1.8447 2.1903 2.4480 2.6877
+0.3405 0.4644 0.7232 0.9199 1.2611 1.5175 1.8446 2.0652 2.3915 2.5781
+0.3289 0.5152 0.6602 1.0213 1.1886 1.5496 1.9553 2.1883 2.5394 2.7362
+0.3000 0.4097 0.8372 1.0793 1.3095 1.5684 1.8746 2.0783 2.3643 2.5490
+0.2421 0.3280 0.5288 0.9261 1.6911 1.8959 2.1013 2.2823 2.5238 2.6960
+0.1070 0.3131 0.6226 0.8881 1.1808 1.4867 1.8146 2.1088 2.4594 2.7186
+0.4400 0.5533 0.7025 0.9206 1.4089 1.5820 1.8080 2.0832 2.3577 2.5300
+0.2250 0.3434 0.4808 0.6721 0.8198 1.1446 2.0201 2.2625 2.5520 2.7604
+0.1671 0.2551 0.4603 0.6777 0.9661 1.5579 1.8659 2.1196 2.4425 2.6551
+0.3910 0.5877 1.0287 1.3547 1.6899 1.9166 2.1451 2.3337 2.5519 2.7071
+0.1435 0.2165 0.3968 0.8376 1.2572 1.5298 1.8791 2.1352 2.4636 2.7011
+0.1756 0.2799 0.4120 0.5808 0.7573 1.3340 1.8235 2.1200 2.4993 2.7365
+0.1332 0.2174 0.4716 0.9483 1.2723 1.6028 1.9272 2.2190 2.5588 2.7990
+0.2122 0.3143 0.7042 0.8849 1.1312 1.3711 1.6832 1.9633 2.2685 2.5156
+0.2089 0.3339 0.4817 0.8526 1.0657 1.2741 1.5747 1.8000 2.4860 2.6843
+0.1636 0.2617 0.4400 0.7357 1.0355 1.2638 1.5672 1.8504 2.1904 2.6588
+0.1945 0.2934 0.4869 0.8567 1.1262 1.3604 1.6898 1.9143 2.1475 2.3503
+0.1606 0.2442 0.3931 0.9237 1.5811 1.7529 2.0133 2.2272 2.5250 2.7265
+0.4866 0.7045 1.0593 1.2795 1.5326 1.8221 2.1461 2.3665 2.6041 2.7599
+0.4012 0.4911 0.7103 0.8585 1.0495 1.7244 2.0116 2.2041 2.5189 2.6643
+0.4365 0.6694 0.8644 1.1330 1.4510 1.7627 2.1032 2.3690 2.6280 2.8306
+0.2072 0.4018 0.6227 0.8913 1.3038 1.6056 1.9704 2.2816 2.6135 2.8182
+0.3302 0.4968 0.8713 1.0761 1.2576 1.4654 1.8152 2.1400 2.5404 2.7493
+0.1385 0.2292 0.3530 0.6006 1.4699 1.6571 1.9438 2.1663 2.5027 2.7308
+0.1894 0.2915 0.4345 0.6341 1.0024 1.1896 1.6896 2.0966 2.4086 2.6768
+0.3841 0.5197 0.8889 1.1480 1.4383 1.6285 1.8642 2.0669 2.3466 2.5325
+0.2008 0.3097 0.4664 0.6638 1.2798 1.4940 1.7270 2.0264 2.2915 2.4750
+0.1864 0.2857 0.4481 1.1025 1.3096 1.5035 1.7614 1.9891 2.4255 2.6031
+0.4081 0.6134 0.9514 1.1818 1.3943 1.6361 1.9891 2.2395 2.5547 2.7287
+0.2964 0.3876 0.9450 1.2247 1.3906 1.5882 1.8241 2.0589 2.4188 2.5871
+0.3127 0.4038 0.6168 1.0810 1.3067 1.4759 1.8817 2.0781 2.3394 2.5539
+0.2066 0.3059 0.4989 0.7132 0.9066 1.4460 1.7584 1.9755 2.2210 2.4741
+0.2634 0.3956 0.5667 0.8777 1.0517 1.6029 2.0590 2.2607 2.6064 2.7647
+0.4331 0.5315 0.7764 1.0444 1.2269 1.4311 1.7093 1.9187 2.4337 2.6149
+0.2161 0.4429 0.6851 0.8336 1.1037 1.2966 1.5283 2.0299 2.3407 2.5384
+0.2814 0.3637 0.5416 0.9475 1.5137 1.6945 1.8892 2.1017 2.3190 2.5007
+0.4454 0.6883 1.1402 1.4098 1.7435 2.0014 2.2521 2.4457 2.6495 2.7985
+0.1641 0.4083 0.6426 1.0592 1.3258 1.5754 1.8666 2.1381 2.4572 2.7177
+0.3391 0.4607 0.6072 0.8463 1.4207 1.6062 1.8303 2.0887 2.3615 2.5348
+0.2414 0.3396 0.5100 0.7470 1.3329 1.8618 2.0751 2.2564 2.5147 2.6874
+0.1694 0.2535 0.4156 0.8302 1.2853 1.5838 2.0907 2.3085 2.5929 2.7951
+0.2047 0.3652 0.6500 0.8068 1.0178 1.1865 1.4889 2.0671 2.5966 2.7634
+0.2425 0.3247 0.6020 1.2226 1.4272 1.5996 1.8377 2.0413 2.5333 2.7021
+0.3842 0.5030 0.6541 0.8771 1.0576 1.2612 1.6744 1.8735 2.4781 2.6803
+0.2042 0.3280 0.7283 0.8985 1.1444 1.3299 1.6032 2.1539 2.4739 2.6547
+0.1268 0.1924 0.3208 0.5153 1.1304 1.4443 1.8047 2.0552 2.4385 2.7572
+0.2713 0.3659 0.5395 1.0705 1.4228 1.5836 1.9763 2.1641 2.4459 2.6301
+0.3047 0.4043 0.5727 0.7368 0.8997 1.3242 1.6473 1.8879 2.4330 2.6295
+0.1224 0.3948 0.6903 0.9199 1.2852 1.5516 1.8645 2.1231 2.4657 2.7044
+0.2157 0.3281 0.5036 0.9272 1.0975 1.5285 1.8080 2.0569 2.5448 2.7221
+0.1670 0.2490 0.3696 0.5921 1.3019 1.8398 2.2165 2.3725 2.6142 2.8338
+0.3899 0.5573 0.8100 1.0732 1.3966 1.6598 2.0001 2.2517 2.5548 2.7403
+0.4905 0.6064 0.8222 0.9966 1.1912 1.5714 1.9628 2.1727 2.5300 2.7055
+0.1309 0.2342 0.6232 0.8795 1.1283 1.3655 1.7371 2.0251 2.3992 2.6885
+0.1805 0.2672 0.4297 1.2440 1.4967 1.6796 1.9592 2.1784 2.5439 2.7289
+0.2280 0.5429 0.6967 0.8732 1.4074 1.6074 1.9516 2.2124 2.5486 2.7722
+0.2339 0.3379 0.4924 0.9061 1.3074 1.4719 1.8884 2.1110 2.3618 2.5545
+0.1384 0.2291 0.5127 1.0450 1.4017 1.7884 2.1134 2.3664 2.6588 2.8435
+0.2196 0.6359 0.9100 1.2007 1.4589 1.7053 2.0128 2.2722 2.5520 2.7643
+0.1698 0.2615 0.3810 0.5706 1.4297 1.8686 2.0728 2.2559 2.4860 2.6701
+0.1445 0.2158 0.3658 0.5451 0.9389 1.3669 1.7900 2.0846 2.3924 2.7161
+0.2789 0.3816 0.5277 0.8487 1.3751 1.5461 1.7832 2.0264 2.2695 2.4665
+0.1733 0.3023 0.9216 1.2368 1.4776 1.7229 1.9952 2.2471 2.5390 2.7265
+0.3374 0.5033 1.0951 1.3262 1.5284 1.7336 1.9733 2.2009 2.4992 2.6751
+0.1293 0.2743 0.7533 1.0166 1.2416 1.4444 1.7962 2.0851 2.4770 2.7204
+0.3106 0.4176 0.6358 0.9434 1.1419 1.3458 1.9638 2.1678 2.4390 2.6235
+0.4533 0.5760 0.7392 0.9136 1.0829 1.2759 1.7903 2.0360 2.3124 2.5325
+0.3702 0.5218 0.6977 0.8776 1.1096 1.2855 1.5612 1.9480 2.2170 2.4361
+0.1637 0.2647 0.4185 0.6666 1.1584 1.3270 1.7829 1.9821 2.4361 2.7094
+0.1769 0.2767 0.3942 0.5746 1.3595 1.7110 1.9176 2.1405 2.3722 2.5705
+0.2712 0.3820 0.6524 0.8317 1.0341 1.3972 1.7312 1.9918 2.3854 2.5886
+0.1003 0.2046 0.7261 1.1004 1.4057 1.6697 1.9903 2.2603 2.5813 2.8009
+0.2534 0.3752 0.7192 0.9323 1.3698 1.5955 1.8653 2.0656 2.3368 2.5340
+0.3589 0.4508 0.6631 1.0521 1.5065 1.6697 1.8929 2.1074 2.3466 2.5242
+0.1955 0.2862 0.6111 0.8053 1.0501 1.5218 1.7996 2.0303 2.3788 2.5973
+0.2982 0.4033 0.5660 0.8924 1.1933 1.3465 1.7895 2.0173 2.2606 2.5069
+0.3356 0.4711 0.6310 0.8491 1.0049 1.4364 1.8176 2.0292 2.5710 2.7525
+0.2016 0.2912 0.4363 0.9800 1.4897 1.6494 1.8862 2.0819 2.3636 2.6091
+0.4549 0.6491 0.8450 1.0209 1.1747 1.3745 1.8824 2.1130 2.3760 2.5768
+0.2510 0.3524 0.5171 0.8931 1.4094 1.5710 1.8536 2.0478 2.4766 2.7320
+0.1576 0.2547 0.3891 0.8551 1.4282 1.5880 1.8583 2.0521 2.5359 2.7340
+0.3481 0.4382 0.7720 1.1289 1.3203 1.5019 1.7665 1.9570 2.2231 2.4465
+0.3116 0.4068 0.6991 0.8894 1.0912 1.5356 1.8084 2.0006 2.2323 2.4367
+0.2706 0.4033 0.8272 1.0851 1.4820 1.6927 1.9292 2.1267 2.4049 2.5857
+0.2745 0.3550 0.8663 1.3742 1.5545 1.7324 1.9664 2.1538 2.4581 2.6245
+0.1736 0.2553 0.5357 0.9009 1.1888 1.5132 1.8579 2.1181 2.4273 2.6847
+0.3026 0.4148 0.9044 1.1695 1.3657 1.7036 1.9891 2.2226 2.5441 2.7085
+0.3998 0.5108 0.7205 0.9848 1.1828 1.3716 1.7154 1.9191 2.1875 2.4257
+0.2141 0.3095 0.7428 1.0426 1.2851 1.5571 1.7901 1.9804 2.2462 2.5265
+0.1574 0.2290 0.3869 0.5735 1.0925 1.3383 1.6598 1.9364 2.2095 2.4195
diff --git a/gr-vocoder/lib/codec2/codebook/lspvqanssi2.txt 
b/gr-vocoder/lib/codec2/codebook/lspvqanssi2.txt
new file mode 100644
index 0000000..607cb47
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspvqanssi2.txt
@@ -0,0 +1,129 @@
+10 128
+0.0120 0.0022 0.0068 -0.0112 -0.0508 -0.0490 0.2249 0.1476 0.0133 -0.0379
+0.0598 0.0477 0.0380 0.0660 0.0517 0.0150 0.0617 0.0081 -0.0768 -0.1007
+-0.0087 -0.0440 0.0873 0.0882 0.0391 -0.0060 0.1100 0.0569 -0.0241 -0.0468
+0.0146 -0.0005 0.0322 -0.0650 -0.0778 -0.0780 -0.0255 -0.0527 -0.0301 -0.0401
+-0.0240 -0.0560 -0.0374 0.0274 0.0484 -0.0227 0.0328 0.1135 0.0117 -0.0300
+-0.0324 -0.0574 0.0302 0.0137 -0.0603 -0.1194 -0.0105 -0.0513 0.0698 0.0538
+0.0635 0.0382 0.0531 0.0897 0.0495 0.0039 -0.0421 -0.0919 0.0407 0.0167
+0.0954 0.0854 0.0360 -0.0025 -0.0252 -0.0528 -0.0435 -0.0561 -0.0405 -0.0432
+0.0110 -0.0010 -0.0433 -0.0167 0.1402 0.0738 0.0423 -0.0024 -0.0920 -0.1099
+0.0179 0.0184 -0.0041 -0.0640 0.1004 0.0608 -0.0023 -0.0357 0.1509 0.1262
+-0.0145 -0.0240 -0.0595 -0.1063 0.0597 -0.0040 -0.0886 0.1184 0.0380 0.0126
+-0.0072 0.0172 0.0076 0.0288 0.0810 0.0278 0.0709 0.0051 0.0214 -0.0301
+0.0127 -0.0126 -0.0434 0.1610 0.1178 0.0704 0.0257 -0.0073 -0.0425 -0.0610
+-0.0165 -0.0369 -0.0785 0.1007 0.0309 -0.0651 0.0142 -0.0614 0.0426 0.0289
+-0.0374 -0.0712 0.0049 -0.0382 0.0472 0.0095 -0.0268 -0.0747 -0.0457 -0.0758
+-0.0211 -0.0432 -0.0547 -0.0446 -0.1078 0.0090 -0.0565 -0.1298 0.0721 0.0351
+-0.0014 -0.0072 -0.0283 -0.0324 -0.0208 -0.0703 0.0979 0.0865 -0.0007 0.1881
+-0.0077 -0.0302 0.1231 0.0905 0.0786 0.0432 -0.0286 -0.0661 -0.0055 -0.0275
+0.0010 0.0043 0.0044 0.0380 -0.1201 -0.0098 -0.0166 0.0105 0.0153 0.0134
+0.0843 0.0636 0.0416 -0.0004 -0.0570 -0.0592 0.1158 0.0590 0.0126 0.0034
+0.0346 0.0290 -0.0037 -0.0026 -0.0457 0.1824 0.1469 0.0870 0.0291 -0.0074
+0.0066 0.0682 -0.0148 0.0287 0.0095 -0.0563 0.1296 0.0426 0.1215 0.0886
+-0.0132 -0.0399 0.0960 0.0474 0.0140 0.0306 -0.0192 -0.0703 -0.1559 -0.1556
+-0.0600 0.0482 0.1257 0.0521 0.0229 -0.0031 0.0817 0.0571 -0.0138 -0.0277
+0.0013 -0.0103 -0.0470 -0.0687 -0.1444 0.0181 0.1350 0.0559 -0.0177 -0.0598
+-0.0215 -0.0318 -0.0689 -0.0268 0.0917 0.0307 0.0135 -0.0184 -0.0857 0.1231
+0.0137 -0.0152 0.0199 -0.0291 -0.0685 0.0438 -0.1137 0.0231 -0.0632 -0.0802
+-0.0011 0.0314 0.0535 -0.0135 -0.0291 -0.0579 -0.1049 0.0288 -0.0628 0.1355
+-0.0901 0.0041 -0.0170 0.0351 0.0144 -0.0505 0.0396 0.0638 -0.0145 0.0141
+-0.0400 -0.0603 -0.0714 0.0329 -0.0049 -0.0529 -0.1251 0.0022 -0.0449 -0.0778
+0.0247 0.0296 0.0239 0.0122 -0.0348 -0.1224 -0.0033 0.1237 -0.0016 -0.0436
+0.0246 0.0050 0.0322 0.0818 0.0203 0.0846 0.0022 0.0876 0.0149 -0.0184
+-0.0204 -0.0228 0.0365 -0.0164 0.1087 0.0374 -0.0550 0.0330 -0.0582 -0.0736
+-0.0305 -0.0485 -0.0572 0.0275 -0.0271 -0.0436 0.1217 0.0700 0.1253 0.0990
+-0.0079 -0.0204 -0.0325 0.0491 0.0158 -0.0365 -0.1309 -0.1812 0.1428 0.1148
+0.0680 0.0547 0.0309 0.0079 -0.0332 0.0391 -0.0287 0.1258 0.1123 0.1016
+-0.0264 -0.0409 -0.0538 -0.0192 -0.0393 -0.0713 -0.0618 -0.1078 -0.1850 0.0532
+0.0081 -0.0115 -0.0090 0.1201 -0.0413 -0.0995 0.0445 -0.0032 -0.0286 -0.0497
+-0.0023 -0.0184 -0.0358 0.1279 0.0847 0.0530 0.0230 -0.0212 0.1245 0.0965
+0.0111 0.1038 0.0597 0.0413 0.0533 0.0011 0.0031 0.0705 0.0242 0.0198
+0.0020 -0.0071 -0.0262 -0.0496 -0.0750 -0.1273 -0.1785 0.0606 -0.0223 -0.0583
+-0.0202 0.0669 0.0081 0.0335 -0.0218 -0.1073 -0.0146 -0.0673 0.0490 0.0210
+-0.0108 -0.0230 -0.0614 -0.0986 0.0629 0.0006 0.1496 0.1099 0.0316 0.0098
+-0.0368 -0.0685 0.0138 -0.0213 -0.0009 0.0344 -0.0249 0.0311 0.0803 0.0759
+0.0038 -0.0158 0.0142 0.0254 0.0970 0.0021 -0.1029 0.0006 0.0576 0.0261
+-0.0083 0.0698 0.0406 -0.0348 0.0200 0.0833 0.0186 -0.0145 -0.0725 -0.0872
+-0.0506 -0.0673 0.0776 -0.0172 -0.0444 -0.0531 -0.0799 0.0005 -0.0359 -0.0446
+0.0368 0.0376 -0.0407 -0.0190 0.0987 0.0212 -0.0349 -0.0951 -0.0084 -0.0342
+-0.0309 -0.0561 0.0950 -0.0125 -0.1028 -0.0133 0.0920 0.0965 0.0668 0.0409
+-0.0898 0.0036 -0.0353 -0.0024 -0.0365 -0.0259 -0.0485 -0.0843 -0.0063 -0.0167
+-0.0255 -0.0407 -0.0456 -0.0931 -0.0892 -0.0293 -0.0510 0.0183 -0.0104 0.0472
+-0.0172 -0.0399 -0.0731 0.0546 0.0320 -0.0283 0.0415 -0.0107 -0.1237 -0.1102
+0.0210 0.0294 -0.0038 -0.0090 -0.0551 -0.0922 0.0261 -0.0334 -0.1181 -0.1536
+0.0092 0.0032 -0.0162 0.0398 0.0205 0.1266 -0.0107 -0.0858 0.0392 0.0032
+-0.0038 -0.0269 -0.0737 0.1138 0.0263 -0.0031 -0.1188 0.1621 0.0831 0.0526
+0.0023 -0.0149 -0.0497 0.0898 0.0456 -0.0145 -0.0928 -0.1507 -0.0611 -0.0938
+0.0120 0.0124 -0.0286 -0.1319 0.0219 0.0311 -0.0398 -0.0465 -0.0008 -0.0375
+0.0138 0.0023 0.0024 0.1072 0.0531 0.0006 0.0292 -0.0115 -0.0620 0.1650
+0.0070 -0.0251 0.0715 0.0380 -0.0404 0.1230 0.0629 0.0096 0.0973 0.0641
+-0.0586 0.0772 0.0128 0.1060 0.0715 0.0374 -0.0074 -0.0365 -0.0543 -0.0489
+-0.0392 0.0871 -0.0069 -0.1084 0.0264 -0.0495 0.0396 0.0005 -0.0293 -0.0240
+-0.0327 0.0605 0.0662 0.0100 -0.0007 -0.0525 -0.0812 -0.0686 -0.0873 -0.0830
+0.0119 0.0058 0.0030 -0.0307 0.0650 0.0175 -0.0741 -0.1500 -0.1947 0.0881
+0.0572 0.0411 0.0152 -0.0127 -0.0589 -0.0510 -0.0212 -0.0834 0.1434 0.1318
+0.0518 0.0417 -0.0430 0.0963 -0.0014 0.0173 0.0234 -0.0273 0.0359 -0.0118
+0.0652 0.0587 0.0013 -0.0700 0.1262 0.0975 0.0680 0.0598 0.0048 -0.0305
+-0.0185 -0.0440 0.1178 0.0656 0.0052 -0.0534 -0.1151 0.1116 0.0659 0.0344
+0.0788 0.0577 0.0452 0.0283 -0.0278 0.0911 0.0280 -0.0254 0.0029 -0.0361
+-0.0165 -0.0322 -0.0526 -0.1057 0.0927 0.0293 -0.1026 -0.1671 0.0470 0.0355
+0.0100 0.0001 -0.0221 -0.0775 -0.1109 -0.1416 0.0884 0.0441 0.0632 0.0409
+0.0204 0.0432 0.0141 -0.0296 0.1073 0.0580 0.0383 0.0270 -0.0857 0.1246
+0.0488 0.0231 0.0648 -0.0179 0.0747 0.0156 -0.0384 -0.0733 -0.0732 -0.0970
+0.0005 -0.0199 -0.0260 -0.0511 -0.1110 0.0670 -0.0413 0.1571 0.0498 0.0191
+0.0037 -0.0085 -0.0796 0.0086 -0.0852 0.0850 0.0115 -0.0065 0.1161 0.0727
+0.0023 0.0483 0.0285 -0.0642 -0.0477 0.0175 0.0346 0.0452 0.0655 0.0284
+-0.0986 0.0463 0.0326 -0.0055 0.0702 0.0194 -0.0423 -0.0107 0.0338 0.0619
+0.0126 -0.0138 -0.1115 0.0159 -0.0331 0.0217 -0.0376 -0.0407 -0.0222 -0.0503
+0.0222 0.0071 -0.0490 0.1017 0.0551 -0.0164 0.1578 0.1059 0.0025 -0.0107
+0.0124 -0.0090 0.0322 0.0930 0.0281 -0.0403 -0.0781 0.0125 -0.0670 -0.1058
+0.0363 0.0077 0.1052 0.0039 0.0676 0.0891 0.0433 0.0252 0.0224 -0.0043
+-0.0045 -0.0194 -0.0193 -0.0480 -0.0640 -0.0695 -0.1597 -0.0030 0.1728 0.1231
+0.0297 0.0025 0.0619 -0.0347 -0.1171 0.1043 0.0868 0.0191 -0.0739 -0.1075
+0.0073 0.0914 0.0367 -0.0236 0.0232 0.0304 -0.0787 -0.1099 0.0460 0.0082
+0.0296 0.0297 -0.0444 0.0184 0.0602 -0.0295 -0.0934 0.0636 -0.0347 -0.0722
+-0.0290 -0.0629 0.0598 0.0013 0.0064 0.1431 0.0920 0.0468 -0.0311 -0.0614
+-0.0152 -0.0311 -0.0500 -0.0672 -0.1257 -0.0134 -0.0220 -0.0612 -0.1131 -0.1417
+0.0371 0.0153 -0.0817 -0.0007 0.0837 0.0481 0.0460 0.0678 0.0524 0.0432
+0.0126 -0.0069 -0.0092 -0.0693 -0.0250 0.1510 0.0098 -0.0683 -0.0566 -0.0769
+-0.0199 -0.0423 0.0806 0.0562 0.0009 -0.0563 -0.1358 -0.1578 -0.0456 0.0032
+0.0091 0.0101 -0.0090 -0.0279 -0.0489 -0.1038 -0.0815 0.2184 0.1172 0.0902
+-0.0024 -0.0135 0.0392 0.0028 0.0792 0.0404 0.0867 0.1610 0.0954 0.0846
+-0.0004 -0.0220 -0.0282 -0.1022 -0.0799 0.1278 0.0765 0.0402 0.0850 0.0611
+0.0443 0.0320 -0.0384 -0.0964 0.0030 -0.0398 -0.0730 -0.0052 -0.0267 0.1209
+-0.0706 0.1151 0.0722 -0.0175 -0.0927 -0.0559 0.0316 0.0186 0.0105 0.0314
+-0.0145 -0.0263 -0.0564 0.0248 -0.0181 -0.0817 -0.0938 0.0366 -0.0315 0.1253
+0.0307 0.0039 0.1290 0.0402 -0.0439 -0.0384 0.0044 -0.0177 -0.0172 -0.0310
+0.0447 0.0298 0.0287 0.0273 -0.0350 -0.0708 -0.1829 -0.0317 0.0643 0.0057
+-0.0820 -0.0326 0.0209 -0.0711 0.0084 0.0111 0.0426 0.0262 -0.0061 0.0005
+0.0545 0.0377 -0.0417 -0.0625 0.0114 -0.0405 0.0573 0.0191 -0.0263 -0.0472
+-0.0053 -0.0049 -0.0255 -0.0578 -0.0237 -0.0721 -0.1487 -0.1636 0.0046 -0.0355
+0.0309 0.0107 0.0163 0.0132 -0.0536 -0.0009 -0.0706 -0.1350 -0.0514 -0.0960
+0.0306 0.0003 0.0494 0.0701 0.0027 -0.0458 0.0780 0.0327 0.0937 0.0605
+-0.0017 -0.0275 0.0797 -0.0268 -0.1014 0.0593 -0.0528 -0.1103 0.0682 0.0322
+-0.0507 -0.0806 -0.0646 -0.0052 -0.0576 0.0451 0.0489 0.0150 0.0029 -0.0189
+0.0270 0.0143 -0.0375 -0.0071 -0.0607 -0.1157 -0.0345 -0.1115 0.0201 -0.0104
+-0.0807 -0.1088 0.0845 0.0720 0.0441 0.0301 0.0043 0.0052 0.0016 0.0201
+-0.0290 -0.0532 0.0036 -0.0201 -0.0723 -0.1321 0.0867 0.0479 -0.0556 -0.0850
+-0.0271 0.0126 0.1283 0.0533 -0.0030 -0.0352 -0.0326 -0.0553 0.1402 0.1121
+-0.0358 -0.0518 -0.1080 0.0134 0.0950 0.0384 -0.0040 -0.0254 0.0026 -0.0217
+-0.0152 -0.0375 -0.0827 0.0916 0.0188 0.1306 0.0983 0.0606 0.0381 0.0080
+-0.0107 -0.0269 -0.0573 -0.1189 0.0258 0.1009 0.0565 0.0270 -0.0557 -0.0778
+-0.0193 -0.0242 -0.0784 -0.0816 0.0287 -0.0484 0.0292 -0.0414 0.1124 0.0767
+0.0177 -0.0148 0.0472 -0.0808 0.0623 -0.0636 0.0750 -0.0107 0.0673 0.0425
+-0.0220 0.0577 -0.0769 -0.0247 -0.0321 0.0341 -0.0108 0.0109 -0.0142 0.0122
+0.0194 0.0248 -0.0096 -0.0205 -0.0460 -0.1160 0.0492 -0.0188 -0.1535 0.0816
+0.0301 -0.0286 -0.0077 -0.0117 -0.0036 -0.0026 0.0133 -0.0032 0.0007 -0.0160
+0.0115 -0.0111 0.0246 -0.0639 0.0325 -0.0313 0.0808 0.0435 -0.0777 -0.1108
+-0.0079 -0.0334 -0.0144 -0.0539 0.1564 0.1175 0.0549 0.0340 0.0319 0.0027
+-0.0155 -0.0275 -0.0739 -0.0932 0.0108 -0.0698 0.0036 -0.0213 -0.0486 -0.0670
+-0.0234 -0.0567 0.0020 0.0908 -0.0151 0.0460 -0.0175 -0.0523 0.0098 -0.0237
+0.0057 -0.0066 -0.0418 0.0418 -0.0449 0.1069 0.0629 -0.0016 -0.1068 -0.1492
+-0.0791 0.0403 -0.0009 0.0285 -0.0065 0.0963 0.0550 0.0634 0.0693 0.0694
+-0.0068 -0.0197 -0.0919 0.0071 -0.0551 -0.1173 0.0926 0.0413 0.0127 -0.0158
+0.0540 0.0389 -0.0195 -0.0800 -0.1383 0.0440 -0.0139 -0.0405 0.0147 -0.0183
+0.0380 0.0248 0.0520 -0.0609 0.0339 -0.0070 -0.0974 0.1182 0.0221 -0.0310
+0.0043 0.0046 -0.0274 -0.0502 0.0326 -0.0143 -0.0586 -0.0866 -0.1673 -0.1624
+0.0428 0.0385 -0.0228 0.0704 0.0069 -0.0145 -0.0623 -0.0639 -0.1479 0.0212
+-0.0078 -0.0297 0.0025 -0.0239 -0.0793 0.0896 0.0315 -0.0546 -0.1309 0.1080
diff --git a/gr-vocoder/lib/codec2/codebook/lspvqanssi3.txt 
b/gr-vocoder/lib/codec2/codebook/lspvqanssi3.txt
new file mode 100644
index 0000000..a28c3e7
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspvqanssi3.txt
@@ -0,0 +1,65 @@
+10 64
+-0.0291 0.0272 -0.0364 -0.0313 -0.0487 -0.0205 0.0501 0.0225 0.0178 0.0080
+-0.0406 -0.0383 0.0013 -0.0155 -0.0261 -0.0598 0.0003 -0.0242 0.0151 -0.0140
+-0.0445 0.0356 0.0180 -0.0272 -0.0018 -0.0177 -0.0703 0.0471 0.0128 -0.0068
+-0.0033 -0.0285 -0.0560 -0.0186 -0.0499 -0.0070 0.0068 -0.0126 0.0388 -0.0097
+-0.0071 -0.0114 -0.0308 -0.0094 -0.0541 -0.0272 -0.0756 0.0477 -0.0234 0.0678
+0.0048 0.0307 -0.0174 -0.0593 0.0097 -0.0134 0.0034 -0.0212 -0.0418 0.0869
+-0.0189 0.0165 -0.0269 0.0744 0.0344 -0.0177 -0.0603 0.0212 -0.0104 0.0345
+-0.0130 -0.0352 -0.0086 -0.0257 -0.0286 0.0409 0.0656 0.0106 -0.0598 0.0252
+0.0041 0.0097 -0.0032 -0.0154 -0.0405 0.0670 -0.0164 0.0451 0.0774 0.0504
+0.0010 -0.0091 -0.0345 0.0511 0.0016 0.0011 0.0684 0.0167 0.0601 0.0512
+0.0204 -0.0038 -0.0426 0.0185 -0.0191 -0.0630 0.0295 -0.0153 -0.0559 0.0560
+-0.0461 -0.0041 0.0515 0.0219 0.0322 0.0093 0.0044 0.0106 -0.0329 -0.0521
+0.0304 0.0017 0.0209 -0.0002 0.0689 0.0136 0.0216 -0.0268 -0.0682 0.0333
+-0.0175 -0.0425 0.0153 -0.0050 -0.0113 0.0297 -0.0659 -0.0344 0.0302 -0.0272
+-0.0217 -0.0362 0.0426 0.0233 -0.0393 0.0052 0.0138 0.0657 0.0427 0.0220
+-0.0039 -0.0011 -0.0002 -0.0453 -0.0835 0.0144 -0.0268 -0.0589 -0.0185 0.0133
+0.0081 -0.0032 0.0638 0.0032 0.0060 0.0002 -0.0303 -0.0823 0.0124 -0.0308
+0.0108 0.0011 0.0059 0.0396 0.0392 0.0351 -0.0045 -0.0323 -0.0512 -0.0975
+-0.0144 -0.0306 -0.0302 -0.0070 0.0123 -0.0042 -0.0083 -0.0514 0.0120 0.1116
+-0.0046 -0.0131 0.0472 0.0144 -0.0296 -0.0518 0.0337 -0.0145 -0.0733 0.0793
+-0.0064 -0.0162 -0.0327 -0.0711 0.0108 -0.0131 0.0025 -0.0254 -0.0277 -0.0680
+-0.0306 0.0055 0.0272 -0.0189 -0.0173 0.0221 0.0773 0.0043 0.0458 -0.0169
+-0.0006 0.0299 0.0259 0.0227 -0.0530 -0.0596 -0.0271 -0.0091 0.0181 -0.0233
+-0.0116 -0.0398 0.0089 0.0708 -0.0028 -0.0084 -0.0206 -0.0354 -0.0275 -0.0037
+0.0259 -0.0064 -0.0380 0.0572 0.0083 0.0286 -0.0565 0.0158 0.0396 -0.0123
+0.0552 0.0331 -0.0052 -0.0346 -0.0180 -0.0194 -0.0237 0.0184 0.0056 -0.0199
+0.0143 0.0131 -0.0166 0.0196 0.0154 0.0310 -0.0048 0.0901 -0.0333 0.0761
+0.0118 -0.0107 0.0099 0.0078 0.0002 -0.0716 -0.0233 0.0793 0.0516 0.0300
+0.0204 0.0243 0.0192 0.0181 0.0001 -0.0243 -0.0764 -0.0622 -0.0324 0.0640
+0.0132 0.0016 -0.0187 -0.0425 0.0627 0.0094 -0.0786 0.0304 0.0294 -0.0146
+-0.0221 -0.0154 0.0285 -0.0709 0.0406 0.0114 0.0073 -0.0199 0.0081 0.0268
+0.0227 0.0055 0.0163 -0.0447 0.0246 0.0795 0.0239 0.0211 -0.0145 -0.0576
+-0.0119 0.0637 0.0278 0.0202 -0.0086 0.0389 0.0320 -0.0049 -0.0272 -0.0274
+0.0040 -0.0211 0.0426 0.0480 0.0415 0.0659 0.0408 0.0198 0.0327 0.0029
+0.0430 0.0311 0.0083 0.0353 0.0250 0.0143 0.0106 -0.0305 0.0633 0.0227
+-0.0277 0.0302 0.0337 0.0176 0.0191 -0.0156 0.0231 0.0118 0.0465 0.0875
+0.0221 0.0146 0.0147 -0.0211 -0.0317 -0.0179 -0.0049 -0.0297 -0.1078 -0.0413
+-0.0531 0.0180 -0.0066 0.0365 -0.0033 0.0090 -0.0158 -0.0698 0.0315 -0.0048
+0.0289 0.0053 0.0082 0.0077 -0.0664 0.0474 0.0407 -0.0096 0.0028 -0.0526
+-0.0106 -0.0129 -0.0315 0.0335 -0.0217 -0.0427 0.0582 0.0193 -0.0288 -0.0777
+-0.0003 -0.0141 -0.0102 0.0007 -0.0077 -0.0517 -0.0909 0.0128 -0.0349 -0.0769
+-0.0227 -0.0159 -0.0327 0.0011 0.0312 0.0100 -0.0180 -0.0537 -0.0997 0.0122
+0.0190 -0.0139 0.0341 -0.0131 -0.0368 -0.0138 -0.0074 -0.0415 0.0791 0.0503
+0.0182 0.0027 0.0032 -0.0325 -0.0309 -0.0898 0.0509 -0.0170 0.0301 -0.0137
+0.0233 0.0100 0.0231 0.0730 0.0212 -0.0299 0.0440 0.0041 -0.0101 -0.0251
+0.0074 -0.0033 -0.0285 -0.0350 0.0101 0.0735 0.0036 -0.0659 0.0429 -0.0052
+0.0148 -0.0035 -0.0233 0.0079 -0.0142 -0.0402 -0.0358 -0.0985 -0.0080 -0.0549
+0.0203 0.0057 -0.0604 0.0098 0.0402 0.0151 0.0500 0.0058 -0.0086 -0.0401
+0.0056 -0.0381 0.0420 -0.0125 0.0157 -0.0268 0.0433 0.0123 -0.0176 -0.0685
+0.0030 0.0502 0.0067 -0.0222 0.0405 -0.0226 0.0020 -0.0401 -0.0026 -0.0521
+0.0317 0.0089 0.0620 0.0251 0.0066 0.0089 -0.0565 0.0414 0.0005 -0.0365
+-0.0058 0.0086 -0.0291 -0.0164 -0.0134 -0.0490 -0.0427 -0.0451 0.0869 0.0334
+0.0024 0.0328 -0.0415 0.0003 -0.0287 0.0193 -0.0547 -0.0222 -0.0196 -0.0571
+-0.0271 -0.0397 -0.0431 -0.0043 0.0332 0.0093 0.0082 0.0585 0.0282 0.0004
+-0.0251 -0.0167 -0.0289 0.0196 -0.0363 0.0850 0.0028 0.0319 -0.0202 -0.0512
+0.0389 0.0226 0.0401 -0.0091 -0.0152 0.0001 0.0738 0.0402 0.0097 0.0310
+-0.0126 0.0130 -0.0046 -0.0216 0.0298 -0.0344 0.0713 0.0547 -0.0470 -0.0294
+0.0125 0.0044 -0.0028 0.0209 -0.0200 0.0854 0.0018 -0.0386 -0.0703 0.0778
+-0.0036 -0.0347 0.0309 -0.0184 0.0290 -0.0025 -0.0644 0.0347 -0.0523 0.0644
+0.0064 0.0295 -0.0017 0.0282 0.0176 0.0027 0.0246 0.0967 0.0401 -0.0231
+0.0054 -0.0109 0.0055 -0.0479 -0.0490 -0.0136 -0.0245 0.0839 0.0026 -0.0493
+0.0128 -0.0050 -0.0219 -0.0621 0.0313 0.0019 0.0696 0.0459 0.0574 0.0299
+-0.0091 -0.0290 -0.0068 0.0276 0.0645 -0.0150 0.0015 -0.0374 0.0415 -0.0124
+-0.0171 0.0177 -0.0138 0.0034 0.0840 0.0584 0.0233 0.0100 0.0122 0.0047
diff --git a/gr-vocoder/lib/codec2/codebook/lspvqanssi4.txt 
b/gr-vocoder/lib/codec2/codebook/lspvqanssi4.txt
new file mode 100644
index 0000000..01867d4
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codebook/lspvqanssi4.txt
@@ -0,0 +1,65 @@
+10 64
+0.0221 -0.0035 -0.0032 -0.0177 -0.0327 0.0518 -0.0110 -0.0150 -0.0136 -0.0327
+0.0099 -0.0059 0.0031 -0.0174 0.0464 -0.0240 0.0251 -0.0270 0.0454 -0.0082
+-0.0029 0.0025 -0.0267 -0.0318 -0.0157 0.0173 0.0253 0.0063 -0.0481 0.0419
+-0.0332 -0.0179 -0.0042 0.0241 0.0044 -0.0098 -0.0081 0.0024 -0.0414 0.0339
+-0.0060 0.0182 -0.0051 -0.0479 0.0016 -0.0179 0.0316 0.0222 -0.0029 -0.0351
+0.0074 0.0015 0.0337 -0.0082 -0.0008 0.0129 0.0001 0.0650 0.0175 0.0309
+-0.0212 -0.0261 0.0196 -0.0309 0.0093 -0.0272 0.0260 0.0169 0.0132 0.0116
+-0.0010 0.0202 0.0228 -0.0227 -0.0141 0.0192 -0.0423 -0.0097 -0.0342 0.0338
+-0.0149 -0.0110 -0.0156 0.0290 0.0028 0.0123 -0.0350 -0.0501 0.0272 -0.0245
+-0.0005 -0.0194 0.0460 -0.0001 -0.0280 0.0216 -0.0028 -0.0162 0.0177 -0.0254
+-0.0109 -0.0026 0.0038 -0.0150 -0.0421 -0.0422 0.0164 -0.0436 0.0054 -0.0098
+0.0061 -0.0106 0.0062 0.0207 -0.0329 0.0177 -0.0578 0.0408 0.0077 -0.0260
+0.0001 -0.0098 0.0106 -0.0003 -0.0292 0.0032 0.0560 0.0311 -0.0282 -0.0445
+0.0033 0.0345 -0.0022 -0.0029 -0.0228 0.0242 0.0197 -0.0286 0.0194 -0.0328
+0.0094 -0.0010 0.0121 0.0229 0.0161 0.0363 -0.0124 0.0179 -0.0626 0.0020
+-0.0070 -0.0272 -0.0171 -0.0249 -0.0039 0.0254 0.0317 -0.0324 0.0276 -0.0090
+-0.0002 0.0057 -0.0204 0.0512 -0.0170 0.0113 0.0157 0.0427 -0.0024 0.0162
+-0.0064 -0.0144 0.0216 0.0053 -0.0361 0.0287 0.0230 -0.0161 -0.0189 0.0589
+0.0091 -0.0059 -0.0308 0.0171 -0.0137 -0.0033 -0.0505 -0.0155 -0.0527 0.0133
+-0.0121 -0.0051 0.0219 0.0136 0.0476 -0.0090 -0.0460 0.0208 0.0072 -0.0076
+0.0098 -0.0328 -0.0211 0.0054 -0.0146 -0.0263 0.0248 0.0045 -0.0183 0.0301
+0.0101 0.0139 -0.0073 0.0234 0.0083 -0.0194 -0.0365 0.0307 0.0580 0.0153
+-0.0111 0.0019 0.0265 -0.0150 0.0311 0.0362 0.0244 -0.0213 -0.0224 -0.0299
+0.0061 0.0082 -0.0181 0.0081 -0.0344 0.0133 -0.0095 -0.0411 0.0462 0.0371
+0.0089 -0.0157 0.0179 -0.0256 -0.0118 -0.0302 -0.0329 0.0212 -0.0463 -0.0162
+-0.0313 0.0096 -0.0040 0.0186 0.0248 -0.0126 0.0472 -0.0079 0.0115 -0.0270
+0.0055 0.0044 0.0172 0.0079 -0.0089 -0.0202 -0.0233 -0.0397 -0.0305 -0.0620
+-0.0282 -0.0104 -0.0071 -0.0242 -0.0255 0.0204 -0.0187 -0.0103 -0.0227 -0.0424
+-0.0056 0.0065 0.0151 -0.0376 0.0039 0.0009 -0.0507 -0.0040 0.0393 -0.0201
+0.0128 -0.0228 0.0115 -0.0446 0.0316 0.0266 -0.0036 0.0117 -0.0009 0.0048
+-0.0088 0.0226 0.0125 0.0090 0.0008 -0.0341 0.0243 -0.0178 -0.0589 0.0278
+0.0151 0.0021 -0.0349 -0.0365 -0.0098 -0.0179 -0.0212 -0.0313 0.0109 -0.0164
+-0.0211 -0.0112 -0.0446 0.0014 -0.0034 -0.0179 0.0110 0.0176 0.0286 0.0045
+0.0034 -0.0151 0.0380 0.0331 -0.0034 -0.0439 0.0145 0.0120 0.0036 0.0017
+-0.0348 0.0192 0.0167 0.0069 -0.0266 -0.0085 -0.0076 0.0260 0.0234 0.0075
+-0.0237 0.0150 -0.0094 -0.0201 0.0234 -0.0041 -0.0160 -0.0549 -0.0021 0.0239
+-0.0019 0.0173 0.0295 0.0443 0.0081 0.0181 -0.0039 -0.0270 0.0155 0.0107
+0.0065 -0.0055 -0.0368 0.0232 0.0370 0.0367 0.0046 -0.0167 0.0047 0.0173
+0.0116 0.0053 -0.0229 0.0382 0.0160 -0.0453 0.0057 -0.0267 0.0020 -0.0051
+-0.0140 0.0302 -0.0208 0.0106 0.0101 -0.0049 -0.0319 0.0227 -0.0206 -0.0371
+-0.0007 -0.0109 -0.0053 0.0078 0.0410 -0.0001 0.0543 0.0328 -0.0196 0.0332
+-0.0043 -0.0028 -0.0246 0.0285 -0.0248 0.0153 0.0303 -0.0310 -0.0335 -0.0315
+-0.0417 0.1029 0.0377 0.0069 0.0012 0.0065 0.0007 -0.0144 -0.0083 0.0004
+0.0295 0.0099 -0.0144 -0.0145 0.0141 -0.0013 0.0362 -0.0142 -0.0428 -0.0161
+-0.0095 -0.0206 0.0116 0.0132 0.0164 0.0158 0.0012 -0.0024 0.0640 0.0364
+0.0005 -0.0022 -0.0165 -0.0057 0.0263 0.0339 0.0014 0.0541 0.0164 -0.0411
+0.0039 -0.0143 -0.0107 0.0032 -0.0160 -0.0502 0.0010 0.0272 0.0161 -0.0500
+0.0083 0.0292 -0.0076 -0.0201 0.0313 0.0213 0.0120 0.0087 0.0285 0.0332
+0.0170 0.0018 0.0001 0.0205 0.0106 -0.0064 -0.0082 -0.0083 -0.0082 0.0886
+0.0075 -0.0078 -0.0038 -0.0337 -0.0491 0.0048 0.0069 0.0300 0.0369 0.0088
+-0.0091 -0.0327 0.0041 0.0376 0.0170 0.0154 0.0126 0.0153 -0.0024 -0.0353
+0.0289 -0.0080 0.0063 0.0274 -0.0061 0.0208 0.0390 -0.0060 0.0294 -0.0088
+-0.0037 -0.0195 0.0058 0.0023 -0.0149 -0.0360 -0.0587 -0.0248 0.0288 0.0203
+-0.0031 0.0081 -0.0112 -0.0221 0.0067 -0.0505 -0.0233 0.0353 -0.0131 0.0417
+0.0243 0.0231 -0.0013 0.0049 -0.0423 -0.0245 -0.0029 0.0184 -0.0162 -0.0010
+0.0045 0.0101 -0.0042 0.0014 -0.0133 -0.0321 0.0642 0.0153 0.0377 0.0277
+0.0275 0.0083 0.0286 -0.0243 -0.0084 -0.0236 0.0027 -0.0289 0.0201 0.0235
+0.0281 0.0078 0.0038 0.0069 0.0302 0.0170 -0.0423 -0.0340 0.0104 -0.0181
+0.0334 -0.0034 -0.0257 -0.0061 0.0140 -0.0099 -0.0195 0.0529 0.0019 0.0010
+-0.0114 0.0012 -0.0038 -0.0016 -0.0140 0.0697 0.0372 0.0243 0.0172 0.0066
+0.0192 0.0149 0.0285 0.0077 0.0246 -0.0135 0.0145 0.0317 -0.0074 -0.0438
+-0.0034 -0.0175 -0.0245 -0.0153 0.0357 -0.0102 -0.0062 -0.0053 -0.0308 -0.0499
+0.0025 -0.0253 0.0148 0.0031 0.0189 -0.0023 -0.0085 -0.0596 -0.0337 0.0175
+-0.0091 -0.0171 -0.0217 -0.0189 0.0056 0.0249 -0.0499 0.0236 0.0042 0.0449
diff --git a/gr-vocoder/lib/codec2/codec2.c b/gr-vocoder/lib/codec2/codec2.c
index 93ea920..bc4a084 100644
--- a/gr-vocoder/lib/codec2/codec2.c
+++ b/gr-vocoder/lib/codec2/codec2.c
@@ -42,7 +42,32 @@
 #include "interp.h"
 #include "postfilter.h"
 #include "codec2.h"
+#include "lsp.h"
 #include "codec2_internal.h"
+#include "machdep.h"
+
+/*---------------------------------------------------------------------------*\
+
+                             FUNCTION HEADERS
+
+\*---------------------------------------------------------------------------*/
+
+void analyse_one_frame(struct CODEC2 *c2, MODEL *model, short speech[]);
+void synthesise_one_frame(struct CODEC2 *c2, short speech[], MODEL *model,
+                         float ak[]);
+void codec2_encode_3200(struct CODEC2 *c2, unsigned char * bits, short 
speech[]);
+void codec2_decode_3200(struct CODEC2 *c2, short speech[], const unsigned char 
* bits);
+void codec2_encode_2400(struct CODEC2 *c2, unsigned char * bits, short 
speech[]);
+void codec2_decode_2400(struct CODEC2 *c2, short speech[], const unsigned char 
* bits);
+void codec2_encode_1600(struct CODEC2 *c2, unsigned char * bits, short 
speech[]);
+void codec2_decode_1600(struct CODEC2 *c2, short speech[], const unsigned char 
* bits);
+void codec2_encode_1400(struct CODEC2 *c2, unsigned char * bits, short 
speech[]);
+void codec2_decode_1400(struct CODEC2 *c2, short speech[], const unsigned char 
* bits);
+void codec2_encode_1300(struct CODEC2 *c2, unsigned char * bits, short 
speech[]);
+void codec2_decode_1300(struct CODEC2 *c2, short speech[], const unsigned char 
* bits, float ber_est);
+void codec2_encode_1200(struct CODEC2 *c2, unsigned char * bits, short 
speech[]);
+void codec2_decode_1200(struct CODEC2 *c2, short speech[], const unsigned char 
* bits);
+static void ear_protection(float in_out[], int n);
 
 /*---------------------------------------------------------------------------*\
 
@@ -64,50 +89,68 @@
 
 \*---------------------------------------------------------------------------*/
 
-void *codec2_create()
+struct CODEC2 * CODEC2_WIN32SUPPORT codec2_create(int mode)
 {
-    CODEC2 *c2;
-    int     i,l;
+    struct CODEC2 *c2;
+    int            i,l;
 
-    c2 = (CODEC2*)malloc(sizeof(CODEC2));
+    c2 = (struct CODEC2*)malloc(sizeof(struct CODEC2));
     if (c2 == NULL)
        return NULL;
 
+    assert(
+          (mode == CODEC2_MODE_3200) ||
+          (mode == CODEC2_MODE_2400) ||
+          (mode == CODEC2_MODE_1600) ||
+          (mode == CODEC2_MODE_1400) ||
+          (mode == CODEC2_MODE_1300) ||
+          (mode == CODEC2_MODE_1200)
+          );
+    c2->mode = mode;
     for(i=0; i<M; i++)
        c2->Sn[i] = 1.0;
     c2->hpf_states[0] = c2->hpf_states[1] = 0.0;
     for(i=0; i<2*N; i++)
        c2->Sn_[i] = 0;
-    make_analysis_window(c2->w,c2->W);
+    c2->fft_fwd_cfg = kiss_fft_alloc(FFT_ENC, 0, NULL, NULL);
+    make_analysis_window(c2->fft_fwd_cfg, c2->w,c2->W);
     make_synthesis_window(c2->Pn);
+    c2->fft_inv_cfg = kiss_fft_alloc(FFT_DEC, 1, NULL, NULL);
     quantise_init();
-    c2->prev_Wo = 0.0;
+    c2->prev_Wo_enc = 0.0;
     c2->bg_est = 0.0;
     c2->ex_phase = 0.0;
 
-    for(l=1; l<MAX_AMP; l++)
-       c2->prev_model.A[l] = 0.0;
-    c2->prev_model.Wo = TWO_PI/P_MAX;
-    c2->prev_model.L = PI/c2->prev_model.Wo;
-    c2->prev_model.voiced = 0;
+    for(l=1; l<=MAX_AMP; l++)
+       c2->prev_model_dec.A[l] = 0.0;
+    c2->prev_model_dec.Wo = TWO_PI/P_MAX;
+    c2->prev_model_dec.L = PI/c2->prev_model_dec.Wo;
+    c2->prev_model_dec.voiced = 0;
 
     for(i=0; i<LPC_ORD; i++) {
-      c2->prev_lsps[i] = i*PI/(LPC_ORD+1);
+      c2->prev_lsps_dec[i] = i*PI/(LPC_ORD+1);
     }
-    c2->prev_energy = 1;
+    c2->prev_e_dec = 1;
 
-    c2->nlp = nlp_create();
+    c2->nlp = nlp_create(M);
     if (c2->nlp == NULL) {
        free (c2);
        return NULL;
     }
 
-    return (void*)c2;
+    c2->lpc_pf = 1; c2->bass_boost = 1; c2->beta = LPCPF_BETA; c2->gamma = 
LPCPF_GAMMA;
+
+    c2->xq_enc[0] = c2->xq_enc[1] = 0.0;
+    c2->xq_dec[0] = c2->xq_dec[1] = 0.0;
+
+    c2->smoothing = 0;
+
+    return c2;
 }
 
 /*---------------------------------------------------------------------------*\
 
-  FUNCTION....: codec2_create
+  FUNCTION....: codec2_destroy
   AUTHOR......: David Rowe
   DATE CREATED: 21/8/2010
 
@@ -115,27 +158,282 @@ void *codec2_create()
 
 \*---------------------------------------------------------------------------*/
 
-void codec2_destroy(void *codec2_state)
+void CODEC2_WIN32SUPPORT codec2_destroy(struct CODEC2 *c2)
 {
-    CODEC2 *c2;
-
-    assert(codec2_state != NULL);
-    c2 = (CODEC2*)codec2_state;
+    assert(c2 != NULL);
     nlp_destroy(c2->nlp);
-    free(codec2_state);
+    KISS_FFT_FREE(c2->fft_fwd_cfg);
+    KISS_FFT_FREE(c2->fft_inv_cfg);
+    free(c2);
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: codec2_bits_per_frame
+  AUTHOR......: David Rowe
+  DATE CREATED: Nov 14 2011
+
+  Returns the number of bits per frame.
+
+\*---------------------------------------------------------------------------*/
+
+int CODEC2_WIN32SUPPORT codec2_bits_per_frame(struct CODEC2 *c2) {
+    if (c2->mode == CODEC2_MODE_3200)
+       return 64;
+    if (c2->mode == CODEC2_MODE_2400)
+       return 48;
+    if  (c2->mode == CODEC2_MODE_1600)
+       return 64;
+    if  (c2->mode == CODEC2_MODE_1400)
+       return 56;
+    if  (c2->mode == CODEC2_MODE_1300)
+       return 52;
+    if  (c2->mode == CODEC2_MODE_1200)
+       return 48;
+
+    return 0; /* shouldn't get here */
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: codec2_samples_per_frame
+  AUTHOR......: David Rowe
+  DATE CREATED: Nov 14 2011
+
+  Returns the number of bits per frame.
+
+\*---------------------------------------------------------------------------*/
+
+int CODEC2_WIN32SUPPORT codec2_samples_per_frame(struct CODEC2 *c2) {
+    if (c2->mode == CODEC2_MODE_3200)
+       return 160;
+    if (c2->mode == CODEC2_MODE_2400)
+       return 160;
+    if  (c2->mode == CODEC2_MODE_1600)
+       return 320;
+    if  (c2->mode == CODEC2_MODE_1400)
+       return 320;
+    if  (c2->mode == CODEC2_MODE_1300)
+       return 320;
+    if  (c2->mode == CODEC2_MODE_1200)
+       return 320;
+
+    return 0; /* shouldnt get here */
+}
+
+void CODEC2_WIN32SUPPORT codec2_encode(struct CODEC2 *c2, unsigned char *bits, 
short speech[])
+{
+    assert(c2 != NULL);
+    assert(
+          (c2->mode == CODEC2_MODE_3200) ||
+          (c2->mode == CODEC2_MODE_2400) ||
+          (c2->mode == CODEC2_MODE_1600) ||
+          (c2->mode == CODEC2_MODE_1400) ||
+          (c2->mode == CODEC2_MODE_1300) ||
+          (c2->mode == CODEC2_MODE_1200)
+          );
+
+    if (c2->mode == CODEC2_MODE_3200)
+       codec2_encode_3200(c2, bits, speech);
+    if (c2->mode == CODEC2_MODE_2400)
+       codec2_encode_2400(c2, bits, speech);
+    if (c2->mode == CODEC2_MODE_1600)
+       codec2_encode_1600(c2, bits, speech);
+    if (c2->mode == CODEC2_MODE_1400)
+       codec2_encode_1400(c2, bits, speech);
+    if (c2->mode == CODEC2_MODE_1300)
+       codec2_encode_1300(c2, bits, speech);
+    if (c2->mode == CODEC2_MODE_1200)
+       codec2_encode_1200(c2, bits, speech);
+}
+
+void CODEC2_WIN32SUPPORT codec2_decode(struct CODEC2 *c2, short speech[], 
const unsigned char *bits, float ber_est)
+{
+    assert(c2 != NULL);
+    assert(
+          (c2->mode == CODEC2_MODE_3200) ||
+          (c2->mode == CODEC2_MODE_2400) ||
+          (c2->mode == CODEC2_MODE_1600) ||
+          (c2->mode == CODEC2_MODE_1400) ||
+          (c2->mode == CODEC2_MODE_1300) ||
+          (c2->mode == CODEC2_MODE_1200)
+          );
+
+    if (c2->mode == CODEC2_MODE_3200)
+       codec2_decode_3200(c2, speech, bits);
+    if (c2->mode == CODEC2_MODE_2400)
+       codec2_decode_2400(c2, speech, bits);
+    if (c2->mode == CODEC2_MODE_1600)
+       codec2_decode_1600(c2, speech, bits);
+    if (c2->mode == CODEC2_MODE_1400)
+       codec2_decode_1400(c2, speech, bits);
+    if (c2->mode == CODEC2_MODE_1300)
+       codec2_decode_1300(c2, speech, bits, ber_est);
+    if (c2->mode == CODEC2_MODE_1200)
+       codec2_decode_1200(c2, speech, bits);
 }
 
+
 /*---------------------------------------------------------------------------*\
 
-  FUNCTION....: codec2_encode
+  FUNCTION....: codec2_encode_3200
+  AUTHOR......: David Rowe
+  DATE CREATED: 13 Sep 2012
+
+  Encodes 160 speech samples (20ms of speech) into 64 bits.
+
+  The codec2 algorithm actually operates internally on 10ms (80
+  sample) frames, so we run the encoding algorithm twice.  On the
+  first frame we just send the voicing bits.  On the second frame we
+  send all model parameters.  Compared to 2400 we use a larger number
+  of bits for the LSPs and non-VQ pitch and energy.
+
+  The bit allocation is:
+
+    Parameter                      bits/frame
+    --------------------------------------
+    Harmonic magnitudes (LSPs)     50
+    Pitch (Wo)                      7
+    Energy                          5
+    Voicing (10ms update)           2
+    TOTAL                          64
+
+\*---------------------------------------------------------------------------*/
+
+void codec2_encode_3200(struct CODEC2 *c2, unsigned char * bits, short 
speech[])
+{
+    MODEL   model;
+    float   ak[LPC_ORD+1];
+    float   lsps[LPC_ORD];
+    float   e;
+    int     Wo_index, e_index;
+    int     lspd_indexes[LPC_ORD];
+    int     i;
+    unsigned int nbit = 0;
+
+    assert(c2 != NULL);
+
+    memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8));
+
+    /* first 10ms analysis frame - we just want voicing */
+
+    analyse_one_frame(c2, &model, speech);
+    pack(bits, &nbit, model.voiced, 1);
+
+    /* second 10ms analysis frame */
+
+    analyse_one_frame(c2, &model, &speech[N]);
+    pack(bits, &nbit, model.voiced, 1);
+    Wo_index = encode_Wo(model.Wo);
+    pack(bits, &nbit, Wo_index, WO_BITS);
+
+    e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, LPC_ORD);
+    e_index = encode_energy(e);
+    pack(bits, &nbit, e_index, E_BITS);
+
+    encode_lspds_scalar(lspd_indexes, lsps, LPC_ORD);
+    for(i=0; i<LSPD_SCALAR_INDEXES; i++) {
+       pack(bits, &nbit, lspd_indexes[i], lspd_bits(i));
+    }
+    assert(nbit == (unsigned)codec2_bits_per_frame(c2));
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: codec2_decode_3200
+  AUTHOR......: David Rowe
+  DATE CREATED: 13 Sep 2012
+
+  Decodes a frame of 64 bits into 160 samples (20ms) of speech.
+
+\*---------------------------------------------------------------------------*/
+
+void codec2_decode_3200(struct CODEC2 *c2, short speech[], const unsigned char 
* bits)
+{
+    MODEL   model[2];
+    int     lspd_indexes[LPC_ORD];
+    float   lsps[2][LPC_ORD];
+    int     Wo_index, e_index;
+    float   e[2];
+    float   snr;
+    float   ak[2][LPC_ORD+1];
+    int     i,j;
+    unsigned int nbit = 0;
+
+    assert(c2 != NULL);
+
+    /* only need to zero these out due to (unused) snr calculation */
+
+    for(i=0; i<2; i++)
+       for(j=1; j<=MAX_AMP; j++)
+           model[i].A[j] = 0.0;
+
+    /* unpack bits from channel ------------------------------------*/
+
+    /* this will partially fill the model params for the 2 x 10ms
+       frames */
+
+    model[0].voiced = unpack(bits, &nbit, 1);
+    model[1].voiced = unpack(bits, &nbit, 1);
+
+    Wo_index = unpack(bits, &nbit, WO_BITS);
+    model[1].Wo = decode_Wo(Wo_index);
+    model[1].L  = PI/model[1].Wo;
+
+    e_index = unpack(bits, &nbit, E_BITS);
+    e[1] = decode_energy(e_index);
+
+    for(i=0; i<LSPD_SCALAR_INDEXES; i++) {
+       lspd_indexes[i] = unpack(bits, &nbit, lspd_bits(i));
+    }
+    decode_lspds_scalar(&lsps[1][0], lspd_indexes, LPC_ORD);
+
+    /* interpolate ------------------------------------------------*/
+
+    /* Wo and energy are sampled every 20ms, so we interpolate just 1
+       10ms frame between 20ms samples */
+
+    interp_Wo(&model[0], &c2->prev_model_dec, &model[1]);
+    e[0] = interp_energy(c2->prev_e_dec, e[1]);
+
+    /* LSPs are sampled every 20ms so we interpolate the frame in
+       between, then recover spectral amplitudes */
+
+    interpolate_lsp_ver2(&lsps[0][0], c2->prev_lsps_dec, &lsps[1][0], 0.5);
+    for(i=0; i<2; i++) {
+       lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD);
+       aks_to_M2(c2->fft_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 
0, 0,
+                  c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma);
+       apply_lpc_correction(&model[i]);
+    }
+
+    /* synthesise ------------------------------------------------*/
+
+    for(i=0; i<2; i++)
+       synthesise_one_frame(c2, &speech[N*i], &model[i], &ak[i][0]);
+
+    /* update memories for next frame ----------------------------*/
+
+    c2->prev_model_dec = model[1];
+    c2->prev_e_dec = e[1];
+    for(i=0; i<LPC_ORD; i++)
+       c2->prev_lsps_dec[i] = lsps[1][i];
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: codec2_encode_2400
   AUTHOR......: David Rowe
   DATE CREATED: 21/8/2010
 
-  Encodes 160 speech samples (20ms of speech) into 51 bits.
+  Encodes 160 speech samples (20ms of speech) into 48 bits.
 
   The codec2 algorithm actually operates internally on 10ms (80
   sample) frames, so we run the encoding algorithm twice.  On the
-  first frame we just send the voicing bit.  One the second frame we
+  first frame we just send the voicing bit.  On the second frame we
   send all model parameters.
 
   The bit allocation is:
@@ -143,132 +441,859 @@ void codec2_destroy(void *codec2_state)
     Parameter                      bits/frame
     --------------------------------------
     Harmonic magnitudes (LSPs)     36
-    Low frequency LPC correction    1
-    Energy                          5
-    Wo (fundamental frequnecy)      7
+    Joint VQ of Energy and Wo       8
     Voicing (10ms update)           2
-    TOTAL                          51
+    Spare                           2
+    TOTAL                          48
 
 \*---------------------------------------------------------------------------*/
 
-void codec2_encode(void *codec2_state, unsigned char * bits, short speech[])
+void codec2_encode_2400(struct CODEC2 *c2, unsigned char * bits, short 
speech[])
 {
-    CODEC2 *c2;
     MODEL   model;
-    int     voiced1, voiced2;
+    float   ak[LPC_ORD+1];
+    float   lsps[LPC_ORD];
+    float   e;
+    int     WoE_index;
     int     lsp_indexes[LPC_ORD];
-    int     energy_index;
-    int     Wo_index;
     int     i;
+    int     spare = 0;
     unsigned int nbit = 0;
 
-    assert(codec2_state != NULL);
-    c2 = (CODEC2*)codec2_state;
+    assert(c2 != NULL);
+
+    memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8));
 
     /* first 10ms analysis frame - we just want voicing */
 
     analyse_one_frame(c2, &model, speech);
-    voiced1 = model.voiced;
+    pack(bits, &nbit, model.voiced, 1);
 
     /* second 10ms analysis frame */
 
     analyse_one_frame(c2, &model, &speech[N]);
-    voiced2 = model.voiced;
+    pack(bits, &nbit, model.voiced, 1);
+
+    e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, LPC_ORD);
+    WoE_index = encode_WoE(&model, e, c2->xq_enc);
+    pack(bits, &nbit, WoE_index, WO_E_BITS);
+
+    encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD);
+    for(i=0; i<LSP_SCALAR_INDEXES; i++) {
+       pack(bits, &nbit, lsp_indexes[i], lsp_bits(i));
+    }
+    pack(bits, &nbit, spare, 2);
+
+    assert(nbit == (unsigned)codec2_bits_per_frame(c2));
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: codec2_decode_2400
+  AUTHOR......: David Rowe
+  DATE CREATED: 21/8/2010
+
+  Decodes frames of 48 bits into 160 samples (20ms) of speech.
+
+\*---------------------------------------------------------------------------*/
+
+void codec2_decode_2400(struct CODEC2 *c2, short speech[], const unsigned char 
* bits)
+{
+    MODEL   model[2];
+    int     lsp_indexes[LPC_ORD];
+    float   lsps[2][LPC_ORD];
+    int     WoE_index;
+    float   e[2];
+    float   snr;
+    float   ak[2][LPC_ORD+1];
+    int     i,j;
+    unsigned int nbit = 0;
+
+    assert(c2 != NULL);
+
+    /* only need to zero these out due to (unused) snr calculation */
+
+    for(i=0; i<2; i++)
+       for(j=1; j<=MAX_AMP; j++)
+           model[i].A[j] = 0.0;
+
+    /* unpack bits from channel ------------------------------------*/
+
+    /* this will partially fill the model params for the 2 x 10ms
+       frames */
+
+    model[0].voiced = unpack(bits, &nbit, 1);
+
+    model[1].voiced = unpack(bits, &nbit, 1);
+    WoE_index = unpack(bits, &nbit, WO_E_BITS);
+    decode_WoE(&model[1], &e[1], c2->xq_dec, WoE_index);
+
+    for(i=0; i<LSP_SCALAR_INDEXES; i++) {
+       lsp_indexes[i] = unpack(bits, &nbit, lsp_bits(i));
+    }
+    decode_lsps_scalar(&lsps[1][0], lsp_indexes, LPC_ORD);
+    check_lsp_order(&lsps[1][0], LPC_ORD);
+    bw_expand_lsps(&lsps[1][0], LPC_ORD, 50.0, 100.0);
+
+    /* interpolate ------------------------------------------------*/
+
+    /* Wo and energy are sampled every 20ms, so we interpolate just 1
+       10ms frame between 20ms samples */
+
+    interp_Wo(&model[0], &c2->prev_model_dec, &model[1]);
+    e[0] = interp_energy(c2->prev_e_dec, e[1]);
+
+    /* LSPs are sampled every 20ms so we interpolate the frame in
+       between, then recover spectral amplitudes */
+
+    interpolate_lsp_ver2(&lsps[0][0], c2->prev_lsps_dec, &lsps[1][0], 0.5);
+    for(i=0; i<2; i++) {
+       lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD);
+       aks_to_M2(c2->fft_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 
0, 0,
+                  c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma);
+       apply_lpc_correction(&model[i]);
+    }
+
+    /* synthesise ------------------------------------------------*/
+
+    for(i=0; i<2; i++)
+       synthesise_one_frame(c2, &speech[N*i], &model[i], &ak[i][0]);
+
+    /* update memories for next frame ----------------------------*/
+
+    c2->prev_model_dec = model[1];
+    c2->prev_e_dec = e[1];
+    for(i=0; i<LPC_ORD; i++)
+       c2->prev_lsps_dec[i] = lsps[1][i];
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: codec2_encode_1600
+  AUTHOR......: David Rowe
+  DATE CREATED: Feb 28 2013
+
+  Encodes 320 speech samples (40ms of speech) into 64 bits.
+
+  The codec2 algorithm actually operates internally on 10ms (80
+  sample) frames, so we run the encoding algorithm 4 times:
+
+  frame 0: voicing bit
+  frame 1: voicing bit, Wo and E
+  frame 2: voicing bit
+  frame 3: voicing bit, Wo and E, scalar LSPs
+
+  The bit allocation is:
+
+    Parameter                      frame 2  frame 4   Total
+    -------------------------------------------------------
+    Harmonic magnitudes (LSPs)      0       36        36
+    Pitch (Wo)                      7        7        14
+    Energy                          5        5        10
+    Voicing (10ms update)           2        2         4
+    TOTAL                          14       50        64
+
+\*---------------------------------------------------------------------------*/
+
+void codec2_encode_1600(struct CODEC2 *c2, unsigned char * bits, short 
speech[])
+{
+    MODEL   model;
+    float   lsps[LPC_ORD];
+    float   ak[LPC_ORD+1];
+    float   e;
+    int     lsp_indexes[LPC_ORD];
+    int     Wo_index, e_index;
+    int     i;
+    unsigned int nbit = 0;
+
+    assert(c2 != NULL);
+
+    memset(bits, '\0',  ((codec2_bits_per_frame(c2) + 7) / 8));
+
+    /* frame 1: - voicing ---------------------------------------------*/
+
+    analyse_one_frame(c2, &model, speech);
+    pack(bits, &nbit, model.voiced, 1);
+
+    /* frame 2: - voicing, scalar Wo & E -------------------------------*/
+
+    analyse_one_frame(c2, &model, &speech[N]);
+    pack(bits, &nbit, model.voiced, 1);
 
     Wo_index = encode_Wo(model.Wo);
-    encode_amplitudes(lsp_indexes,
-                     &energy_index,
-                     &model,
-                      c2->Sn,
-                      c2->w);
-    memset(bits, '\0', ((CODEC2_BITS_PER_FRAME + 7) / 8));
     pack(bits, &nbit, Wo_index, WO_BITS);
-    for(i=0; i<LPC_ORD; i++) {
+
+    /* need to run this just to get LPC energy */
+    e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, LPC_ORD);
+    e_index = encode_energy(e);
+    pack(bits, &nbit, e_index, E_BITS);
+
+    /* frame 3: - voicing ---------------------------------------------*/
+
+    analyse_one_frame(c2, &model, &speech[2*N]);
+    pack(bits, &nbit, model.voiced, 1);
+
+    /* frame 4: - voicing, scalar Wo & E, scalar LSPs ------------------*/
+
+    analyse_one_frame(c2, &model, &speech[3*N]);
+    pack(bits, &nbit, model.voiced, 1);
+
+    Wo_index = encode_Wo(model.Wo);
+    pack(bits, &nbit, Wo_index, WO_BITS);
+
+    e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, LPC_ORD);
+    e_index = encode_energy(e);
+    pack(bits, &nbit, e_index, E_BITS);
+
+    encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD);
+    for(i=0; i<LSP_SCALAR_INDEXES; i++) {
        pack(bits, &nbit, lsp_indexes[i], lsp_bits(i));
     }
-    pack(bits, &nbit, energy_index, E_BITS);
-    pack(bits, &nbit, voiced1, 1);
-    pack(bits, &nbit, voiced2, 1);
 
-    assert(nbit == CODEC2_BITS_PER_FRAME);
+    assert(nbit == (unsigned)codec2_bits_per_frame(c2));
 }
 
+
 /*---------------------------------------------------------------------------*\
 
-  FUNCTION....: codec2_decode
+  FUNCTION....: codec2_decode_1600
   AUTHOR......: David Rowe
-  DATE CREATED: 21/8/2010
+  DATE CREATED: 11 May 2012
 
-  Decodes frames of 51 bits into 160 samples (20ms) of speech.
+  Decodes frames of 64 bits into 320 samples (40ms) of speech.
 
 \*---------------------------------------------------------------------------*/
 
-void codec2_decode(void *codec2_state, short speech[],
-                   const unsigned char * bits)
+void codec2_decode_1600(struct CODEC2 *c2, short speech[], const unsigned char 
* bits)
+{
+    MODEL   model[4];
+    int     lsp_indexes[LPC_ORD];
+    float   lsps[4][LPC_ORD];
+    int     Wo_index, e_index;
+    float   e[4];
+    float   snr;
+    float   ak[4][LPC_ORD+1];
+    int     i,j;
+    unsigned int nbit = 0;
+    float   weight;
+
+    assert(c2 != NULL);
+
+    /* only need to zero these out due to (unused) snr calculation */
+
+    for(i=0; i<4; i++)
+       for(j=1; j<=MAX_AMP; j++)
+           model[i].A[j] = 0.0;
+
+    /* unpack bits from channel ------------------------------------*/
+
+    /* this will partially fill the model params for the 4 x 10ms
+       frames */
+
+    model[0].voiced = unpack(bits, &nbit, 1);
+
+    model[1].voiced = unpack(bits, &nbit, 1);
+    Wo_index = unpack(bits, &nbit, WO_BITS);
+    model[1].Wo = decode_Wo(Wo_index);
+    model[1].L  = PI/model[1].Wo;
+
+    e_index = unpack(bits, &nbit, E_BITS);
+    e[1] = decode_energy(e_index);
+
+    model[2].voiced = unpack(bits, &nbit, 1);
+
+    model[3].voiced = unpack(bits, &nbit, 1);
+    Wo_index = unpack(bits, &nbit, WO_BITS);
+    model[3].Wo = decode_Wo(Wo_index);
+    model[3].L  = PI/model[3].Wo;
+
+    e_index = unpack(bits, &nbit, E_BITS);
+    e[3] = decode_energy(e_index);
+
+    for(i=0; i<LSP_SCALAR_INDEXES; i++) {
+       lsp_indexes[i] = unpack(bits, &nbit, lsp_bits(i));
+    }
+    decode_lsps_scalar(&lsps[3][0], lsp_indexes, LPC_ORD);
+    check_lsp_order(&lsps[3][0], LPC_ORD);
+    bw_expand_lsps(&lsps[3][0], LPC_ORD, 50.0, 100.0);
+
+    /* interpolate ------------------------------------------------*/
+
+    /* Wo and energy are sampled every 20ms, so we interpolate just 1
+       10ms frame between 20ms samples */
+
+    interp_Wo(&model[0], &c2->prev_model_dec, &model[1]);
+    e[0] = interp_energy(c2->prev_e_dec, e[1]);
+    interp_Wo(&model[2], &model[1], &model[3]);
+    e[2] = interp_energy(e[1], e[3]);
+
+    /* LSPs are sampled every 40ms so we interpolate the 3 frames in
+       between, then recover spectral amplitudes */
+
+    for(i=0, weight=0.25; i<3; i++, weight += 0.25) {
+       interpolate_lsp_ver2(&lsps[i][0], c2->prev_lsps_dec, &lsps[3][0], 
weight);
+    }
+    for(i=0; i<4; i++) {
+       lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD);
+       aks_to_M2(c2->fft_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 
0, 0,
+                  c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma);
+       apply_lpc_correction(&model[i]);
+    }
+
+    /* synthesise ------------------------------------------------*/
+
+    for(i=0; i<4; i++)
+       synthesise_one_frame(c2, &speech[N*i], &model[i], &ak[i][0]);
+
+    /* update memories for next frame ----------------------------*/
+
+    c2->prev_model_dec = model[3];
+    c2->prev_e_dec = e[3];
+    for(i=0; i<LPC_ORD; i++)
+       c2->prev_lsps_dec[i] = lsps[3][i];
+
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: codec2_encode_1400
+  AUTHOR......: David Rowe
+  DATE CREATED: May 11 2012
+
+  Encodes 320 speech samples (40ms of speech) into 56 bits.
+
+  The codec2 algorithm actually operates internally on 10ms (80
+  sample) frames, so we run the encoding algorithm 4 times:
+
+  frame 0: voicing bit
+  frame 1: voicing bit, joint VQ of Wo and E
+  frame 2: voicing bit
+  frame 3: voicing bit, joint VQ of Wo and E, scalar LSPs
+
+  The bit allocation is:
+
+    Parameter                      frame 2  frame 4   Total
+    -------------------------------------------------------
+    Harmonic magnitudes (LSPs)      0       36        36
+    Energy+Wo                       8        8        16
+    Voicing (10ms update)           2        2         4
+    TOTAL                          10       46        56
+
+\*---------------------------------------------------------------------------*/
+
+void codec2_encode_1400(struct CODEC2 *c2, unsigned char * bits, short 
speech[])
 {
-    CODEC2 *c2;
     MODEL   model;
-    int     voiced1, voiced2;
+    float   lsps[LPC_ORD];
+    float   ak[LPC_ORD+1];
+    float   e;
     int     lsp_indexes[LPC_ORD];
+    int     WoE_index;
+    int     i;
+    unsigned int nbit = 0;
+
+    assert(c2 != NULL);
+
+    memset(bits, '\0',  ((codec2_bits_per_frame(c2) + 7) / 8));
+
+    /* frame 1: - voicing ---------------------------------------------*/
+
+    analyse_one_frame(c2, &model, speech);
+    pack(bits, &nbit, model.voiced, 1);
+
+    /* frame 2: - voicing, joint Wo & E -------------------------------*/
+
+    analyse_one_frame(c2, &model, &speech[N]);
+    pack(bits, &nbit, model.voiced, 1);
+
+    /* need to run this just to get LPC energy */
+    e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, LPC_ORD);
+
+    WoE_index = encode_WoE(&model, e, c2->xq_enc);
+    pack(bits, &nbit, WoE_index, WO_E_BITS);
+
+    /* frame 3: - voicing ---------------------------------------------*/
+
+    analyse_one_frame(c2, &model, &speech[2*N]);
+    pack(bits, &nbit, model.voiced, 1);
+
+    /* frame 4: - voicing, joint Wo & E, scalar LSPs ------------------*/
+
+    analyse_one_frame(c2, &model, &speech[3*N]);
+    pack(bits, &nbit, model.voiced, 1);
+
+    e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, LPC_ORD);
+    WoE_index = encode_WoE(&model, e, c2->xq_enc);
+    pack(bits, &nbit, WoE_index, WO_E_BITS);
+
+    encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD);
+    for(i=0; i<LSP_SCALAR_INDEXES; i++) {
+       pack(bits, &nbit, lsp_indexes[i], lsp_bits(i));
+    }
+
+    assert(nbit == (unsigned)codec2_bits_per_frame(c2));
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: codec2_decode_1400
+  AUTHOR......: David Rowe
+  DATE CREATED: 11 May 2012
+
+  Decodes frames of 56 bits into 320 samples (40ms) of speech.
+
+\*---------------------------------------------------------------------------*/
+
+void codec2_decode_1400(struct CODEC2 *c2, short speech[], const unsigned char 
* bits)
+{
+    MODEL   model[4];
+    int     lsp_indexes[LPC_ORD];
+    float   lsps[4][LPC_ORD];
+    int     WoE_index;
+    float   e[4];
+    float   snr;
+    float   ak[4][LPC_ORD+1];
+    int     i,j;
+    unsigned int nbit = 0;
+    float   weight;
+
+    assert(c2 != NULL);
+
+    /* only need to zero these out due to (unused) snr calculation */
+
+    for(i=0; i<4; i++)
+       for(j=1; j<=MAX_AMP; j++)
+           model[i].A[j] = 0.0;
+
+    /* unpack bits from channel ------------------------------------*/
+
+    /* this will partially fill the model params for the 4 x 10ms
+       frames */
+
+    model[0].voiced = unpack(bits, &nbit, 1);
+
+    model[1].voiced = unpack(bits, &nbit, 1);
+    WoE_index = unpack(bits, &nbit, WO_E_BITS);
+    decode_WoE(&model[1], &e[1], c2->xq_dec, WoE_index);
+
+    model[2].voiced = unpack(bits, &nbit, 1);
+
+    model[3].voiced = unpack(bits, &nbit, 1);
+    WoE_index = unpack(bits, &nbit, WO_E_BITS);
+    decode_WoE(&model[3], &e[3], c2->xq_dec, WoE_index);
+
+    for(i=0; i<LSP_SCALAR_INDEXES; i++) {
+       lsp_indexes[i] = unpack(bits, &nbit, lsp_bits(i));
+    }
+    decode_lsps_scalar(&lsps[3][0], lsp_indexes, LPC_ORD);
+    check_lsp_order(&lsps[3][0], LPC_ORD);
+    bw_expand_lsps(&lsps[3][0], LPC_ORD, 50.0, 100.0);
+
+    /* interpolate ------------------------------------------------*/
+
+    /* Wo and energy are sampled every 20ms, so we interpolate just 1
+       10ms frame between 20ms samples */
+
+    interp_Wo(&model[0], &c2->prev_model_dec, &model[1]);
+    e[0] = interp_energy(c2->prev_e_dec, e[1]);
+    interp_Wo(&model[2], &model[1], &model[3]);
+    e[2] = interp_energy(e[1], e[3]);
+
+    /* LSPs are sampled every 40ms so we interpolate the 3 frames in
+       between, then recover spectral amplitudes */
+
+    for(i=0, weight=0.25; i<3; i++, weight += 0.25) {
+       interpolate_lsp_ver2(&lsps[i][0], c2->prev_lsps_dec, &lsps[3][0], 
weight);
+    }
+    for(i=0; i<4; i++) {
+       lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD);
+       aks_to_M2(c2->fft_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 
0, 0,
+                  c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma);
+       apply_lpc_correction(&model[i]);
+    }
+
+    /* synthesise ------------------------------------------------*/
+
+    for(i=0; i<4; i++)
+       synthesise_one_frame(c2, &speech[N*i], &model[i], &ak[i][0]);
+
+    /* update memories for next frame ----------------------------*/
+
+    c2->prev_model_dec = model[3];
+    c2->prev_e_dec = e[3];
+    for(i=0; i<LPC_ORD; i++)
+       c2->prev_lsps_dec[i] = lsps[3][i];
+
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: codec2_encode_1300
+  AUTHOR......: David Rowe
+  DATE CREATED: March 14 2013
+
+  Encodes 320 speech samples (40ms of speech) into 52 bits.
+
+  The codec2 algorithm actually operates internally on 10ms (80
+  sample) frames, so we run the encoding algorithm 4 times:
+
+  frame 0: voicing bit
+  frame 1: voicing bit,
+  frame 2: voicing bit
+  frame 3: voicing bit, Wo and E, scalar LSPs
+
+  The bit allocation is:
+
+    Parameter                      frame 2  frame 4   Total
+    -------------------------------------------------------
+    Harmonic magnitudes (LSPs)      0       36        36
+    Pitch (Wo)                      0        7         7
+    Energy                          0        5         5
+    Voicing (10ms update)           2        2         4
+    TOTAL                           2       50        52
+
+\*---------------------------------------------------------------------------*/
+
+void codec2_encode_1300(struct CODEC2 *c2, unsigned char * bits, short 
speech[])
+{
+    MODEL   model;
     float   lsps[LPC_ORD];
-    int     energy_index;
-    float   energy;
-    int     Wo_index;
     float   ak[LPC_ORD+1];
-    float   ak_interp[LPC_ORD+1];
+    float   e;
+    int     lsp_indexes[LPC_ORD];
+    int     Wo_index, e_index;
     int     i;
     unsigned int nbit = 0;
-    MODEL   model_interp;
+    #ifdef TIMER
+    unsigned int quant_start;
+    #endif
+
+    assert(c2 != NULL);
+
+    memset(bits, '\0',  ((codec2_bits_per_frame(c2) + 7) / 8));
+
+    /* frame 1: - voicing ---------------------------------------------*/
+
+    analyse_one_frame(c2, &model, speech);
+    pack(bits, &nbit, model.voiced, 1);
+
+    /* frame 2: - voicing ---------------------------------------------*/
+
+    analyse_one_frame(c2, &model, &speech[N]);
+    pack(bits, &nbit, model.voiced, 1);
+
+    /* frame 3: - voicing ---------------------------------------------*/
+
+    analyse_one_frame(c2, &model, &speech[2*N]);
+    pack(bits, &nbit, model.voiced, 1);
 
-    assert(codec2_state != NULL);
-    c2 = (CODEC2*)codec2_state;
+    /* frame 4: - voicing, scalar Wo & E, scalar LSPs ------------------*/
 
-    /* unpack bit stream to integer codes */
+    analyse_one_frame(c2, &model, &speech[3*N]);
+    pack(bits, &nbit, model.voiced, 1);
+
+    Wo_index = encode_Wo(model.Wo);
+    pack(bits, &nbit, Wo_index, WO_BITS);
+
+    #ifdef TIMER
+    quant_start = machdep_timer_sample();
+    #endif
+    e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, LPC_ORD);
+    e_index = encode_energy(e);
+    pack(bits, &nbit, e_index, E_BITS);
+
+    encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD);
+    for(i=0; i<LSP_SCALAR_INDEXES; i++) {
+       pack(bits, &nbit, lsp_indexes[i], lsp_bits(i));
+    }
+    #ifdef TIMER
+    machdep_timer_sample_and_log(quant_start, "    quant/packing");
+    #endif
+
+    assert(nbit == (unsigned)codec2_bits_per_frame(c2));
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: codec2_decode_1300
+  AUTHOR......: David Rowe
+  DATE CREATED: 11 May 2012
+
+  Decodes frames of 52 bits into 320 samples (40ms) of speech.
+
+\*---------------------------------------------------------------------------*/
+
+void codec2_decode_1300(struct CODEC2 *c2, short speech[], const unsigned char 
* bits, float ber_est)
+{
+    MODEL   model[4];
+    int     lsp_indexes[LPC_ORD];
+    float   lsps[4][LPC_ORD];
+    int     Wo_index, e_index;
+    float   e[4];
+    float   snr;
+    float   ak[4][LPC_ORD+1];
+    int     i,j;
+    unsigned int nbit = 0;
+    float   weight;
+    TIMER_VAR(recover_start);
+
+    assert(c2 != NULL);
+
+    /* only need to zero these out due to (unused) snr calculation */
+
+    for(i=0; i<4; i++)
+       for(j=1; j<=MAX_AMP; j++)
+           model[i].A[j] = 0.0;
+
+    /* unpack bits from channel ------------------------------------*/
+
+    /* this will partially fill the model params for the 4 x 10ms
+       frames */
+
+    model[0].voiced = unpack(bits, &nbit, 1);
+    model[1].voiced = unpack(bits, &nbit, 1);
+    model[2].voiced = unpack(bits, &nbit, 1);
+    model[3].voiced = unpack(bits, &nbit, 1);
 
     Wo_index = unpack(bits, &nbit, WO_BITS);
-    for(i=0; i<LPC_ORD; i++) {
+    model[3].Wo = decode_Wo(Wo_index);
+    model[3].L  = PI/model[3].Wo;
+
+    e_index = unpack(bits, &nbit, E_BITS);
+    e[3] = decode_energy(e_index);
+
+    for(i=0; i<LSP_SCALAR_INDEXES; i++) {
        lsp_indexes[i] = unpack(bits, &nbit, lsp_bits(i));
     }
-    energy_index = unpack(bits, &nbit, E_BITS);
-    voiced1 = unpack(bits, &nbit, 1);
-    voiced2 = unpack(bits, &nbit, 1);
-    assert(nbit == CODEC2_BITS_PER_FRAME);
+    decode_lsps_scalar(&lsps[3][0], lsp_indexes, LPC_ORD);
+    check_lsp_order(&lsps[3][0], LPC_ORD);
+    bw_expand_lsps(&lsps[3][0], LPC_ORD, 50.0, 100.0);
+
+    if (ber_est > 0.15) {
+        model[0].voiced =  model[1].voiced = model[2].voiced = model[3].voiced 
= 0;
+        e[3] = decode_energy(10);
+        bw_expand_lsps(&lsps[3][0], LPC_ORD, 200.0, 200.0);
+        fprintf(stderr, "soft mute\n");
+    }
+
+    /* interpolate ------------------------------------------------*/
+
+    /* Wo, energy, and LSPs are sampled every 40ms so we interpolate
+       the 3 frames in between */
+
+    TIMER_SAMPLE(recover_start);
+    for(i=0, weight=0.25; i<3; i++, weight += 0.25) {
+       interpolate_lsp_ver2(&lsps[i][0], c2->prev_lsps_dec, &lsps[3][0], 
weight);
+        interp_Wo2(&model[i], &c2->prev_model_dec, &model[3], weight);
+        e[i] = interp_energy2(c2->prev_e_dec, e[3],weight);
+    }
+
+    /* then recover spectral amplitudes */
+
+    for(i=0; i<4; i++) {
+       lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD);
+       aks_to_M2(c2->fft_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 
0, 0,
+                  c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma);
+       apply_lpc_correction(&model[i]);
+    }
+    TIMER_SAMPLE_AND_LOG2(recover_start, "    recover");
+
+    /* synthesise ------------------------------------------------*/
+
+    for(i=0; i<4; i++)
+       synthesise_one_frame(c2, &speech[N*i], &model[i], &ak[i][0]);
+
+    /* update memories for next frame ----------------------------*/
+
+    c2->prev_model_dec = model[3];
+    c2->prev_e_dec = e[3];
+    for(i=0; i<LPC_ORD; i++)
+       c2->prev_lsps_dec[i] = lsps[3][i];
+
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: codec2_encode_1200
+  AUTHOR......: David Rowe
+  DATE CREATED: Nov 14 2011
+
+  Encodes 320 speech samples (40ms of speech) into 48 bits.
+
+  The codec2 algorithm actually operates internally on 10ms (80
+  sample) frames, so we run the encoding algorithm four times:
+
+  frame 0: voicing bit
+  frame 1: voicing bit, joint VQ of Wo and E
+  frame 2: voicing bit
+  frame 3: voicing bit, joint VQ of Wo and E, VQ LSPs
+
+  The bit allocation is:
+
+    Parameter                      frame 2  frame 4   Total
+    -------------------------------------------------------
+    Harmonic magnitudes (LSPs)      0       27        27
+    Energy+Wo                       8        8        16
+    Voicing (10ms update)           2        2         4
+    Spare                           0        1         1
+    TOTAL                          10       38        48
+
+\*---------------------------------------------------------------------------*/
+
+void codec2_encode_1200(struct CODEC2 *c2, unsigned char * bits, short 
speech[])
+{
+    MODEL   model;
+    float   lsps[LPC_ORD];
+    float   lsps_[LPC_ORD];
+    float   ak[LPC_ORD+1];
+    float   e;
+    int     lsp_indexes[LPC_ORD];
+    int     WoE_index;
+    int     i;
+    int     spare = 0;
+    unsigned int nbit = 0;
+
+    assert(c2 != NULL);
+
+    memset(bits, '\0',  ((codec2_bits_per_frame(c2) + 7) / 8));
+
+    /* frame 1: - voicing ---------------------------------------------*/
+
+    analyse_one_frame(c2, &model, speech);
+    pack(bits, &nbit, model.voiced, 1);
+
+    /* frame 2: - voicing, joint Wo & E -------------------------------*/
+
+    analyse_one_frame(c2, &model, &speech[N]);
+    pack(bits, &nbit, model.voiced, 1);
+
+    /* need to run this just to get LPC energy */
+    e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, LPC_ORD);
+
+    WoE_index = encode_WoE(&model, e, c2->xq_enc);
+    pack(bits, &nbit, WoE_index, WO_E_BITS);
+
+    /* frame 3: - voicing ---------------------------------------------*/
+
+    analyse_one_frame(c2, &model, &speech[2*N]);
+    pack(bits, &nbit, model.voiced, 1);
+
+    /* frame 4: - voicing, joint Wo & E, scalar LSPs ------------------*/
+
+    analyse_one_frame(c2, &model, &speech[3*N]);
+    pack(bits, &nbit, model.voiced, 1);
+
+    e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, LPC_ORD);
+    WoE_index = encode_WoE(&model, e, c2->xq_enc);
+    pack(bits, &nbit, WoE_index, WO_E_BITS);
+
+    encode_lsps_vq(lsp_indexes, lsps, lsps_, LPC_ORD);
+    for(i=0; i<LSP_PRED_VQ_INDEXES; i++) {
+       pack(bits, &nbit, lsp_indexes[i], lsp_pred_vq_bits(i));
+    }
+    pack(bits, &nbit, spare, 1);
+
+    assert(nbit == (unsigned)codec2_bits_per_frame(c2));
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: codec2_decode_1200
+  AUTHOR......: David Rowe
+  DATE CREATED: 14 Feb 2012
+
+  Decodes frames of 48 bits into 320 samples (40ms) of speech.
 
-    /* decode integer codes to model parameters */
+\*---------------------------------------------------------------------------*/
 
-    model.Wo = decode_Wo(Wo_index);
-    model.L = PI/model.Wo;
-    memset(&model.A, 0, (model.L+1)*sizeof(model.A[0]));
-    decode_amplitudes(&model,
-                     ak,
-                     lsp_indexes,
-                     energy_index,
-                     lsps,
-                     &energy);
+void codec2_decode_1200(struct CODEC2 *c2, short speech[], const unsigned char 
* bits)
+{
+    MODEL   model[4];
+    int     lsp_indexes[LPC_ORD];
+    float   lsps[4][LPC_ORD];
+    int     WoE_index;
+    float   e[4];
+    float   snr;
+    float   ak[4][LPC_ORD+1];
+    int     i,j;
+    unsigned int nbit = 0;
+    float   weight;
 
-    model.voiced = voiced2;
-    model_interp.voiced = voiced1;
-    model_interp.Wo = P_MAX/2;
-    memset(&model_interp.A, 0, MAX_AMP*sizeof(model_interp.A[0]));
+    assert(c2 != NULL);
 
-    /* interpolate middle frame's model parameters for adjacent frames */
+    /* only need to zero these out due to (unused) snr calculation */
 
-    interpolate_lsp(&model_interp, &c2->prev_model, &model,
-                   c2->prev_lsps, c2->prev_energy, lsps, energy, ak_interp);
-    apply_lpc_correction(&model_interp);
+    for(i=0; i<4; i++)
+       for(j=1; j<=MAX_AMP; j++)
+           model[i].A[j] = 0.0;
+
+    /* unpack bits from channel ------------------------------------*/
+
+    /* this will partially fill the model params for the 4 x 10ms
+       frames */
+
+    model[0].voiced = unpack(bits, &nbit, 1);
+
+    model[1].voiced = unpack(bits, &nbit, 1);
+    WoE_index = unpack(bits, &nbit, WO_E_BITS);
+    decode_WoE(&model[1], &e[1], c2->xq_dec, WoE_index);
+
+    model[2].voiced = unpack(bits, &nbit, 1);
+
+    model[3].voiced = unpack(bits, &nbit, 1);
+    WoE_index = unpack(bits, &nbit, WO_E_BITS);
+    decode_WoE(&model[3], &e[3], c2->xq_dec, WoE_index);
+
+    for(i=0; i<LSP_PRED_VQ_INDEXES; i++) {
+       lsp_indexes[i] = unpack(bits, &nbit, lsp_pred_vq_bits(i));
+    }
+    decode_lsps_vq(lsp_indexes, &lsps[3][0], LPC_ORD);
+    check_lsp_order(&lsps[3][0], LPC_ORD);
+    bw_expand_lsps(&lsps[3][0], LPC_ORD, 50.0, 100.0);
+
+    /* interpolate ------------------------------------------------*/
+
+    /* Wo and energy are sampled every 20ms, so we interpolate just 1
+       10ms frame between 20ms samples */
+
+    interp_Wo(&model[0], &c2->prev_model_dec, &model[1]);
+    e[0] = interp_energy(c2->prev_e_dec, e[1]);
+    interp_Wo(&model[2], &model[1], &model[3]);
+    e[2] = interp_energy(e[1], e[3]);
+
+    /* LSPs are sampled every 40ms so we interpolate the 3 frames in
+       between, then recover spectral amplitudes */
+
+    for(i=0, weight=0.25; i<3; i++, weight += 0.25) {
+       interpolate_lsp_ver2(&lsps[i][0], c2->prev_lsps_dec, &lsps[3][0], 
weight);
+    }
+    for(i=0; i<4; i++) {
+       lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD);
+       aks_to_M2(c2->fft_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 
0, 0,
+                  c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma);
+       apply_lpc_correction(&model[i]);
+    }
 
-    /* synthesis two 10ms frames */
+    /* synthesise ------------------------------------------------*/
 
-    synthesise_one_frame(c2, speech, &model_interp, ak_interp);
-    synthesise_one_frame(c2, &speech[N], &model, ak);
+    for(i=0; i<4; i++)
+       synthesise_one_frame(c2, &speech[N*i], &model[i], &ak[i][0]);
 
-    /* update memories (decode states) for next time */
+    /* update memories for next frame ----------------------------*/
 
-    memcpy(&c2->prev_model, &model, sizeof(MODEL));
-    memcpy(c2->prev_lsps, lsps, sizeof(lsps));
-    c2->prev_energy = energy;
+    c2->prev_model_dec = model[3];
+    c2->prev_e_dec = e[3];
+    for(i=0; i<LPC_ORD; i++)
+       c2->prev_lsps_dec[i] = lsps[3][i];
 }
 
+
 /*---------------------------------------------------------------------------*\
 
   FUNCTION....: synthesise_one_frame()
@@ -279,13 +1304,30 @@ void codec2_decode(void *codec2_state, short speech[],
 
 \*---------------------------------------------------------------------------*/
 
-void synthesise_one_frame(CODEC2 *c2, short speech[], MODEL *model, float ak[])
+void synthesise_one_frame(struct CODEC2 *c2, short speech[], MODEL *model, 
float ak[])
 {
     int     i;
+    TIMER_VAR(phase_start, pf_start, synth_start);
+
+    #ifdef DUMP
+    dump_quantised_model(model);
+    #endif
+
+    TIMER_SAMPLE(phase_start);
+
+    phase_synth_zero_order(c2->fft_fwd_cfg, model, ak, &c2->ex_phase, LPC_ORD);
+
+    TIMER_SAMPLE_AND_LOG(pf_start,phase_start, "    phase_synth");
 
-    phase_synth_zero_order(model, ak, &c2->ex_phase, LPC_ORD);
     postfilter(model, &c2->bg_est);
-    synthesise(c2->Sn_, model, c2->Pn, 1);
+
+    TIMER_SAMPLE_AND_LOG(synth_start, pf_start, "    postfilter");
+
+    synthesise(c2->fft_inv_cfg, c2->Sn_, model, c2->Pn, 1);
+
+    TIMER_SAMPLE_AND_LOG2(synth_start, "    synth");
+
+    ear_protection(c2->Sn_, N);
 
     for(i=0; i<N; i++) {
        if (c2->Sn_[i] > 32767.0)
@@ -309,13 +1351,14 @@ void synthesise_one_frame(CODEC2 *c2, short speech[], 
MODEL *model, float ak[])
 
 \*---------------------------------------------------------------------------*/
 
-void analyse_one_frame(CODEC2 *c2, MODEL *model, short speech[])
+void analyse_one_frame(struct CODEC2 *c2, MODEL *model, short speech[])
 {
     COMP    Sw[FFT_ENC];
     COMP    Sw_[FFT_ENC];
     COMP    Ew[FFT_ENC];
     float   pitch;
     int     i;
+    TIMER_VAR(dft_start, nlp_start, model_start, two_stage, estamps);
 
     /* Read input speech */
 
@@ -324,19 +1367,155 @@ void analyse_one_frame(CODEC2 *c2, MODEL *model, short 
speech[])
     for(i=0; i<N; i++)
       c2->Sn[i+M-N] = speech[i];
 
-    dft_speech(Sw, c2->Sn, c2->w);
+    TIMER_SAMPLE(dft_start);
+    dft_speech(c2->fft_fwd_cfg, Sw, c2->Sn, c2->w);
+    TIMER_SAMPLE_AND_LOG(nlp_start, dft_start, "    dft_speech");
 
     /* Estimate pitch */
 
-    nlp(c2->nlp,c2->Sn,N,M,P_MIN,P_MAX,&pitch,Sw,&c2->prev_Wo);
+    nlp(c2->nlp,c2->Sn,N,P_MIN,P_MAX,&pitch,Sw, c2->W, &c2->prev_Wo_enc);
+    TIMER_SAMPLE_AND_LOG(model_start, nlp_start, "    nlp");
+
     model->Wo = TWO_PI/pitch;
     model->L = PI/model->Wo;
 
     /* estimate model parameters */
 
     two_stage_pitch_refinement(model, Sw);
-    estimate_amplitudes(model, Sw, c2->W);
-    est_voicing_mbe(model, Sw, c2->W, Sw_, Ew, c2->prev_Wo);
+    TIMER_SAMPLE_AND_LOG(two_stage, model_start, "    two_stage");
+    estimate_amplitudes(model, Sw, c2->W, 0);
+    TIMER_SAMPLE_AND_LOG(estamps, two_stage, "    est_amps");
+    est_voicing_mbe(model, Sw, c2->W, Sw_, Ew, c2->prev_Wo_enc);
+    c2->prev_Wo_enc = model->Wo;
+    TIMER_SAMPLE_AND_LOG2(estamps, "    est_voicing");
+    #ifdef DUMP
+    dump_model(model);
+    #endif
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: ear_protection()
+  AUTHOR......: David Rowe
+  DATE CREATED: Nov 7 2012
+
+  Limits output level to protect ears when there are bit errors or the input
+  is overdriven.  This doesn't correct or mask bit erros, just reduces the
+  worst of their damage.
+
+\*---------------------------------------------------------------------------*/
+
+static void ear_protection(float in_out[], int n) {
+    float max_sample, over, gain;
+    int   i;
+
+    /* find maximum sample in frame */
+
+    max_sample = 0.0;
+    for(i=0; i<n; i++)
+        if (in_out[i] > max_sample)
+            max_sample = in_out[i];
+
+    /* determine how far above set point */
+
+    over = max_sample/30000.0;
+
+    /* If we are x dB over set point we reduce level by 2x dB, this
+       attenuates major excursions in amplitude (likely to be caused
+       by bit errors) more than smaller ones */
+
+    if (over > 1.0) {
+        gain = 1.0/(over*over);
+        //fprintf(stderr, "gain: %f\n", gain);
+        for(i=0; i<n; i++)
+            in_out[i] *= gain;
+    }
+}
+
+void CODEC2_WIN32SUPPORT codec2_set_lpc_post_filter(struct CODEC2 *c2, int 
enable, int bass_boost, float beta, float gamma)
+{
+    assert((beta >= 0.0) && (beta <= 1.0));
+    assert((gamma >= 0.0) && (gamma <= 1.0));
+    c2->lpc_pf = enable;
+    c2->bass_boost = bass_boost;
+    c2->beta = beta;
+    c2->gamma = gamma;
+}
+
+/*
+   Allows optional stealing of one of the voicing bits for use as a
+   spare bit, only 1300 & 1400 & 1600 bit/s supported for now.
+   Experimental method of sending voice/data frames for FreeDV.
+*/
+
+int CODEC2_WIN32SUPPORT codec2_get_spare_bit_index(struct CODEC2 *c2)
+{
+    assert(c2 != NULL);
+
+    switch(c2->mode) {
+    case CODEC2_MODE_1300:
+        return 2; // bit 2 (3th bit) is v2 (third voicing bit)
+        break;
+    case CODEC2_MODE_1400:
+        return 10; // bit 10 (11th bit) is v2 (third voicing bit)
+        break;
+    case CODEC2_MODE_1600:
+        return 15; // bit 15 (16th bit) is v2 (third voicing bit)
+        break;
+    }
+
+    return -1;
+}
+
+/*
+   Reconstructs the spare voicing bit.  Note works on unpacked bits
+   for convenience.
+*/
+
+int CODEC2_WIN32SUPPORT codec2_rebuild_spare_bit(struct CODEC2 *c2, int 
unpacked_bits[])
+{
+    int v1,v3;
+
+    assert(c2 != NULL);
+
+    v1 = unpacked_bits[1];
+
+    switch(c2->mode) {
+    case CODEC2_MODE_1300:
+
+        v3 = unpacked_bits[1+1+1];
+
+        /* if either adjacent frame is voiced, make this one voiced */
+
+        unpacked_bits[2] = (v1 || v3);
+
+        return 0;
+
+        break;
+
+    case CODEC2_MODE_1400:
+
+        v3 = unpacked_bits[1+1+8+1];
+
+        /* if either adjacent frame is voiced, make this one voiced */
+
+        unpacked_bits[10] = (v1 || v3);
+
+        return 0;
+
+        break;
+
+    case CODEC2_MODE_1600:
+        v3 = unpacked_bits[1+1+8+5+1];
+
+        /* if either adjacent frame is voiced, make this one voiced */
+
+        unpacked_bits[15] = (v1 || v3);
+
+        return 0;
+
+        break;
+    }
 
-    c2->prev_Wo = model->Wo;
+    return -1;
 }
diff --git a/gr-vocoder/lib/codec2/codec2.h b/gr-vocoder/lib/codec2/codec2.h
index f812a05..2f0c2b1 100644
--- a/gr-vocoder/lib/codec2/codec2.h
+++ b/gr-vocoder/lib/codec2/codec2.h
@@ -2,10 +2,10 @@
 
   FILE........: codec2.h
   AUTHOR......: David Rowe
-  DATE CREATED: 21/8/2010
+  DATE CREATED: 21 August 2010
 
-  Codec2 fully quantised encoder and decoder functions.  If you want use
-  codec2, these are the functions you need to call.
+  Codec 2 fully quantised encoder and decoder functions.  If you want use
+  Codec 2, these are the functions you need to call.
 
 \*---------------------------------------------------------------------------*/
 
@@ -26,17 +26,49 @@
   along with this program; if not, see <http://www.gnu.org/licenses/>.
 */
 
+#ifdef __cplusplus
+  extern "C" {
+#endif
+
 #ifndef __CODEC2__
 #define  __CODEC2__
 
-#define CODEC2_SAMPLES_PER_FRAME 160
-#define CODEC2_BITS_PER_FRAME     50
-#define CODEC2_BYTES_PER_FRAME  ((CODEC2_BITS_PER_FRAME + 7) / 8) // == 8 
bytes when packing the 50 bits
+/* set up the calling convention for DLL function import/export for
+   WIN32 cross compiling */
+
+#ifdef __CODEC2_WIN32__
+#ifdef __CODEC2_BUILDING_DLL__
+#define CODEC2_WIN32SUPPORT __declspec(dllexport) __stdcall
+#else
+#define CODEC2_WIN32SUPPORT __declspec(dllimport) __stdcall
+#endif
+#else
+#define CODEC2_WIN32SUPPORT
+#endif
+
+#define CODEC2_MODE_3200 0
+#define CODEC2_MODE_2400 1
+#define CODEC2_MODE_1600 2
+#define CODEC2_MODE_1400 3
+#define CODEC2_MODE_1300 4
+#define CODEC2_MODE_1200 5
 
-void *codec2_create();
-void codec2_destroy(void *codec2_state);
-void codec2_encode(void *codec2_state, unsigned char * bits, short 
speech_in[]);
-void codec2_decode(void *codec2_state, short speech_out[],
-      const unsigned char * bits);
+struct CODEC2;
+
+struct CODEC2 * CODEC2_WIN32SUPPORT codec2_create(int mode);
+void CODEC2_WIN32SUPPORT codec2_destroy(struct CODEC2 *codec2_state);
+void CODEC2_WIN32SUPPORT codec2_encode(struct CODEC2 *codec2_state, unsigned 
char * bits, short speech_in[]);
+      void CODEC2_WIN32SUPPORT codec2_decode(struct CODEC2 *codec2_state, 
short speech_out[], const unsigned char *bits, float ber_est);
+int  CODEC2_WIN32SUPPORT codec2_samples_per_frame(struct CODEC2 *codec2_state);
+int  CODEC2_WIN32SUPPORT codec2_bits_per_frame(struct CODEC2 *codec2_state);
+
+void CODEC2_WIN32SUPPORT codec2_set_lpc_post_filter(struct CODEC2 
*codec2_state, int enable, int bass_boost, float beta, float gamma);
+int  CODEC2_WIN32SUPPORT codec2_get_spare_bit_index(struct CODEC2 
*codec2_state);
+int  CODEC2_WIN32SUPPORT codec2_rebuild_spare_bit(struct CODEC2 *codec2_state, 
int unpacked_bits[]);
 
 #endif
+
+#ifdef __cplusplus
+}
+#endif
+
diff --git a/gr-vocoder/lib/codec2/codec2_fdmdv.h 
b/gr-vocoder/lib/codec2/codec2_fdmdv.h
new file mode 100644
index 0000000..b7da96f
--- /dev/null
+++ b/gr-vocoder/lib/codec2/codec2_fdmdv.h
@@ -0,0 +1,124 @@
+/*---------------------------------------------------------------------------*\
+
+  FILE........: codec2_fdmdv.h
+  AUTHOR......: David Rowe
+  DATE CREATED: April 14 2012
+
+  A 1400 bit/s (nominal) Frequency Division Multiplexed Digital Voice
+  (FDMDV) modem.  Used for digital audio over HF SSB. See
+  README_fdmdv.txt for more information, and fdmdv_mod.c and
+  fdmdv_demod.c for example usage.
+
+  The name codec2_fdmdv.h is used to make it unique when "make
+  installed".
+
+  References:
+
+    [1] http://n1su.com/fdmdv/FDMDV_Docs_Rel_1_4b.pdf
+
+\*---------------------------------------------------------------------------*/
+
+/*
+  Copyright (C) 2012 David Rowe
+
+  All rights reserved.
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU Lesser General Public License version 2.1, as
+  published by the Free Software Foundation.  This program is
+  distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or
+  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+  License for more details.
+
+  You should have received a copy of the GNU Lesser General Public License
+  along with this program; if not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef __FDMDV__
+#define __FDMDV__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* set up the calling convention for DLL function import/export for
+   WIN32 cross compiling */
+
+#ifdef __CODEC2_WIN32__
+#ifdef __CODEC2_BUILDING_DLL__
+#define CODEC2_WIN32SUPPORT __declspec(dllexport) __stdcall
+#else
+#define CODEC2_WIN32SUPPORT __declspec(dllimport) __stdcall
+#endif
+#else
+#define CODEC2_WIN32SUPPORT
+#endif
+
+#include "comp.h"
+
+#define FDMDV_NC                      14  /* default number of data carriers   
                             */
+#define FDMDV_NC_MAX                  20  /* maximum number of data carriers   
                             */
+#define FDMDV_BITS_PER_FRAME          28  /* 20ms frames, for nominal 1400 
bit/s                            */
+#define FDMDV_NOM_SAMPLES_PER_FRAME  160  /* modulator output samples/frame 
and nominal demod samples/frame */
+                                          /* at 8000 Hz sample rate            
                             */
+#define FDMDV_MAX_SAMPLES_PER_FRAME  200  /* max demod samples/frame, use this 
to allocate storage          */
+#define FDMDV_SCALE                 1000  /* suggested scaling for 16 bit 
shorts                            */
+#define FDMDV_FCENTRE               1500  /* Centre frequency, Nc/2 carriers 
below this, Nc/2 carriers above (Hz) */
+
+/* 8 to 48 kHz sample rate conversion */
+
+#define FDMDV_OS                 6         /* oversampling rate           */
+#define FDMDV_OS_TAPS           48         /* number of OS filter taps    */
+
+/* FFT points */
+
+#define FDMDV_NSPEC             512
+#define FDMDV_MAX_F_HZ          4000
+
+/* FDMDV states and stats structures */
+
+struct FDMDV;
+
+struct FDMDV_STATS {
+    int    Nc;
+    float  snr_est;                    /* estimated SNR of rx signal in dB (3 
kHz noise BW)  */
+    COMP   rx_symbols[FDMDV_NC_MAX+1]; /* latest received symbols, for scatter 
plot          */
+    int    sync;                       /* demod sync state                     
              */
+    float  foff;                       /* estimated freq offset in Hz          
              */
+    float  rx_timing;                  /* estimated optimum timing offset in 
samples         */
+    float  clock_offset;               /* Estimated tx/rx sample clock offset 
in ppm         */
+};
+
+struct FDMDV * CODEC2_WIN32SUPPORT fdmdv_create(int Nc);
+void           CODEC2_WIN32SUPPORT fdmdv_destroy(struct FDMDV *fdmdv_state);
+void           CODEC2_WIN32SUPPORT fdmdv_use_old_qpsk_mapping(struct FDMDV 
*fdmdv_state);
+int            CODEC2_WIN32SUPPORT fdmdv_bits_per_frame(struct FDMDV 
*fdmdv_state);
+float          CODEC2_WIN32SUPPORT fdmdv_get_fsep(struct FDMDV *fdmdv_state);
+void           CODEC2_WIN32SUPPORT fdmdv_set_fsep(struct FDMDV *fdmdv_state, 
float fsep);
+
+void           CODEC2_WIN32SUPPORT fdmdv_mod(struct FDMDV *fdmdv_state, COMP 
tx_fdm[], int tx_bits[], int *sync_bit);
+void           CODEC2_WIN32SUPPORT fdmdv_demod(struct FDMDV *fdmdv_state, int 
rx_bits[], int *reliable_sync_bit, COMP rx_fdm[], int *nin);
+
+void           CODEC2_WIN32SUPPORT fdmdv_get_test_bits(struct FDMDV 
*fdmdv_state, int tx_bits[]);
+int            CODEC2_WIN32SUPPORT fdmdv_error_pattern_size(struct FDMDV 
*fdmdv_state);
+void           CODEC2_WIN32SUPPORT fdmdv_put_test_bits(struct FDMDV *f, int 
*sync, short error_pattern[], int *bit_errors, int *ntest_bits, int rx_bits[]);
+
+void           CODEC2_WIN32SUPPORT fdmdv_get_demod_stats(struct FDMDV 
*fdmdv_state, struct FDMDV_STATS *fdmdv_stats);
+void           CODEC2_WIN32SUPPORT fdmdv_get_rx_spectrum(struct FDMDV 
*fdmdv_state, float mag_dB[], COMP rx_fdm[], int nin);
+
+void           CODEC2_WIN32SUPPORT fdmdv_8_to_48(float out48k[], float in8k[], 
int n);
+void           CODEC2_WIN32SUPPORT fdmdv_48_to_8(float out8k[], float in48k[], 
int n);
+
+void           CODEC2_WIN32SUPPORT fdmdv_freq_shift(COMP rx_fdm_fcorr[], COMP 
rx_fdm[], float foff, COMP *foff_rect, COMP *foff_phase_rect, int nin);
+
+/* debug/development function(s) */
+
+void CODEC2_WIN32SUPPORT fdmdv_dump_osc_mags(struct FDMDV *f);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/gr-vocoder/lib/codec2/nlp.h b/gr-vocoder/lib/codec2/codec2_fifo.h
similarity index 57%
copy from gr-vocoder/lib/codec2/nlp.h
copy to gr-vocoder/lib/codec2/codec2_fifo.h
index 5e11f11..9140fd7 100644
--- a/gr-vocoder/lib/codec2/nlp.h
+++ b/gr-vocoder/lib/codec2/codec2_fifo.h
@@ -1,15 +1,19 @@
 /*---------------------------------------------------------------------------*\
 
-  FILE........: nlp.c
+  FILE........: codec2_fifo.h
   AUTHOR......: David Rowe
-  DATE CREATED: 23/3/93
+  DATE CREATED: Oct 15 2012
 
-  Non Linear Pitch (NLP) estimation functions.
+  A FIFO design useful in gluing the FDMDV modem and codec together in
+  integrated applications.
+
+  The name codec2_fifo.h is used to make it unique when "make
+  installed".
 
 \*---------------------------------------------------------------------------*/
 
 /*
-  Copyright (C) 2009 David Rowe
+  Copyright (C) 2012 David Rowe
 
   All rights reserved.
 
@@ -25,15 +29,23 @@
   along with this program; if not, see <http://www.gnu.org/licenses/>.
 */
 
-#ifndef __NLP__
-#define __NLP__
+#ifndef __FIFO__
+#define __FIFO__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
 
-#include "comp.h"
+struct FIFO;
 
-void *nlp_create();
-void nlp_destroy(void *nlp_state);
-float nlp(void *nlp_state, float Sn[], int n, int m, int pmin, int pmax,
-         float *pitch, COMP Sw[], float *prev_Wo);
-float test_candidate_mbe(COMP Sw[], float f0, COMP Sw_[]);
+struct FIFO *fifo_create(int nshort);
+void fifo_destroy(struct FIFO *fifo);
+int fifo_write(struct FIFO *fifo, short data[], int n);
+int fifo_read(struct FIFO *fifo, short data[], int n);
+int fifo_used(struct FIFO *fifo);
+
+#ifdef __cplusplus
+}
+#endif
 
 #endif
diff --git a/gr-vocoder/lib/codec2/codec2_internal.h 
b/gr-vocoder/lib/codec2/codec2_internal.h
index 3aa5300..246d1ae 100644
--- a/gr-vocoder/lib/codec2/codec2_internal.h
+++ b/gr-vocoder/lib/codec2/codec2_internal.h
@@ -2,15 +2,15 @@
 
   FILE........: codec2_internal.h
   AUTHOR......: David Rowe
-  DATE CREATED: 22 March 2011
+  DATE CREATED: April 16 2012
 
-  Some internal structures and states broken out here as they are useful for
-  testing and development.
+  Header file for Codec2 internal states, exposed via this header
+  file to assist in testing.
 
 \*---------------------------------------------------------------------------*/
 
 /*
-  Copyright (C) 2011 David Rowe
+  Copyright (C) 2012 David Rowe
 
   All rights reserved.
 
@@ -27,37 +27,36 @@
 */
 
 #ifndef __CODEC2_INTERNAL__
-#define  __CODEC2_INTERNAL__
-
-/*---------------------------------------------------------------------------*\
-
-                             STATES
-
-\*---------------------------------------------------------------------------*/
-
-typedef struct {
-    float  w[M];              /* time domain hamming window                */
-    COMP   W[FFT_ENC];        /* DFT of w[]                                */
-    float  Pn[2*N];           /* trapezoidal synthesis window              */
-    float  Sn[M];              /* input speech                              */
-    float  hpf_states[2];      /* high pass filter states                   */
-    void  *nlp;                /* pitch predictor states                    */
-    float  Sn_[2*N];          /* synthesised output speech                 */
-    float  ex_phase;           /* excitation model phase track              */
-    float  bg_est;             /* background noise estimate for post filter */
-    float  prev_Wo;            /* previous frame's pitch estimate           */
-    MODEL  prev_model;         /* previous frame's model parameters         */
-    float  prev_lsps[LPC_ORD]; /* previous frame's LSPs                     */
-    float  prev_energy;        /* previous frame's LPC energy               */
-} CODEC2;
-
-/*---------------------------------------------------------------------------*\
-
-                             FUNCTION HEADERS
-
-\*---------------------------------------------------------------------------*/
-
-void analyse_one_frame(CODEC2 *c2, MODEL *model, short speech[]);
-void synthesise_one_frame(CODEC2 *c2, short speech[], MODEL *model,float ak[]);
+#define __CODEC2_INTERNAL__
+
+struct CODEC2 {
+    int           mode;
+    kiss_fft_cfg  fft_fwd_cfg;             /* forward FFT config               
         */
+    float         w[M];                           /* time domain hamming 
window                */
+    COMP          W[FFT_ENC];             /* DFT of w[]                        
        */
+    float         Pn[2*N];                /* trapezoidal synthesis window      
        */
+    float         Sn[M];                   /* input speech                     
         */
+    float         hpf_states[2];           /* high pass filter states          
         */
+    void         *nlp;                     /* pitch predictor states           
         */
+
+    kiss_fft_cfg  fft_inv_cfg;             /* inverse FFT config               
         */
+    float         Sn_[2*N];               /* synthesised output speech         
        */
+    float         ex_phase;                /* excitation model phase track     
         */
+    float         bg_est;                  /* background noise estimate for 
post filter */
+    float         prev_Wo_enc;             /* previous frame's pitch estimate  
         */
+    MODEL         prev_model_dec;          /* previous frame's model 
parameters         */
+    float         prev_lsps_dec[LPC_ORD];  /* previous frame's LSPs            
         */
+    float         prev_e_dec;              /* previous frame's LPC energy      
         */
+
+    int           lpc_pf;                  /* LPC post filter on               
         */
+    int           bass_boost;              /* LPC post filter bass boost       
         */
+    float         beta;                    /* LPC post filter parameters       
         */
+    float         gamma;
+
+    float         xq_enc[2];               /* joint pitch and energy VQ states 
         */
+    float         xq_dec[2];
+
+    int           smoothing;               /* enable smoothing for channels 
with errors */
+};
 
 #endif
diff --git a/gr-vocoder/lib/codec2/defines.h b/gr-vocoder/lib/codec2/defines.h
index 75064fa..4b81357 100644
--- a/gr-vocoder/lib/codec2/defines.h
+++ b/gr-vocoder/lib/codec2/defines.h
@@ -68,8 +68,8 @@
 typedef struct {
   float Wo;            /* fundamental frequency estimate in radians  */
   int   L;             /* number of harmonics                        */
-  float A[MAX_AMP];    /* amplitiude of each harmonic                */
-  float phi[MAX_AMP];  /* phase of each harmonic                     */
+  float A[MAX_AMP+1];  /* amplitiude of each harmonic                */
+  float phi[MAX_AMP+1];        /* phase of each harmonic                     */
   int   voiced;                /* non-zero if this frame is voiced           */
 } MODEL;
 
@@ -81,8 +81,14 @@ struct lsp_codebook {
     int                        m;        /* elements in codebook       */
     const float        *       cb;       /* The elements               */
 };
+
 extern const struct lsp_codebook lsp_cb[];
 extern const struct lsp_codebook lsp_cbd[];
-extern const struct lsp_codebook lsp_cbdvq[];
+extern const struct lsp_codebook lsp_cbvq[];
+extern const struct lsp_codebook lsp_cbjnd[];
+extern const struct lsp_codebook lsp_cbdt[];
+extern const struct lsp_codebook lsp_cbjvm[];
+extern const struct lsp_codebook lsp_cbvqanssi[];
+extern const struct lsp_codebook ge_cb[];
 
 #endif
diff --git a/gr-vocoder/lib/codec2/dump.c b/gr-vocoder/lib/codec2/dump.c
index 1dc34c8..cc935d7 100644
--- a/gr-vocoder/lib/codec2/dump.c
+++ b/gr-vocoder/lib/codec2/dump.c
@@ -32,6 +32,13 @@
 #include <string.h>
 #include <math.h>
 
+#ifdef __EMBEDDED__
+#include "gdb_stdio.h"
+#define fprintf gdb_stdio_fprintf
+#define fopen gdb_stdio_fopen
+#define fclose gdb_stdio_fclose
+#endif
+
 #ifdef DUMP
 static int dumpon = 0;
 
@@ -41,8 +48,12 @@ static FILE *few = NULL;
 static FILE *fsw_ = NULL;
 static FILE *fmodel = NULL;
 static FILE *fqmodel = NULL;
+static FILE *fpwb = NULL;
 static FILE *fpw = NULL;
+static FILE *frw = NULL;
 static FILE *flsp = NULL;
+static FILE *fweights = NULL;
+static FILE *flsp_ = NULL;
 static FILE *fphase = NULL;
 static FILE *fphase_ = NULL;
 static FILE *ffw = NULL;
@@ -50,11 +61,13 @@ static FILE *fe = NULL;
 static FILE *fsq = NULL;
 static FILE *fdec = NULL;
 static FILE *fsnr = NULL;
+static FILE *flpcsnr = NULL;
 static FILE *fak = NULL;
+static FILE *fak_ = NULL;
 static FILE *fbg = NULL;
 static FILE *fE = NULL;
 static FILE *frk = NULL;
-static FILE *fres = NULL;
+static FILE *fhephase = NULL;
 
 static char  prefix[MAX_STR];
 
@@ -76,10 +89,18 @@ void dump_off(){
        fclose(fmodel);
     if (fqmodel != NULL)
        fclose(fqmodel);
+    if (fpwb != NULL)
+       fclose(fpwb);
     if (fpw != NULL)
        fclose(fpw);
+    if (frw != NULL)
+       fclose(frw);
     if (flsp != NULL)
        fclose(flsp);
+    if (fweights != NULL)
+       fclose(fweights);
+    if (flsp_ != NULL)
+       fclose(flsp_);
     if (fphase != NULL)
        fclose(fphase);
     if (fphase_ != NULL)
@@ -94,16 +115,20 @@ void dump_off(){
        fclose(fdec);
     if (fsnr != NULL)
        fclose(fsnr);
+    if (flpcsnr != NULL)
+       fclose(flpcsnr);
     if (fak != NULL)
        fclose(fak);
+    if (fak_ != NULL)
+       fclose(fak_);
     if (fbg != NULL)
        fclose(fbg);
     if (fE != NULL)
        fclose(fE);
     if (frk != NULL)
        fclose(frk);
-    if (fres != NULL)
-       fclose(fres);
+    if (fhephase != NULL)
+       fclose(fhephase);
 }
 
 void dump_Sn(float Sn[]) {
@@ -186,6 +211,7 @@ void dump_Ew(COMP Ew[]) {
 void dump_model(MODEL *model) {
     int l;
     char s[MAX_STR];
+    char line[2048];
 
     if (!dumpon) return;
 
@@ -195,18 +221,25 @@ void dump_model(MODEL *model) {
        assert(fmodel != NULL);
     }
 
-    fprintf(fmodel,"%f\t%d\t", model->Wo, model->L);
-    for(l=1; l<=model->L; l++)
-       fprintf(fmodel,"%f\t",model->A[l]);
-    for(l=model->L+1; l<MAX_AMP; l++)
-       fprintf(fmodel,"0.0\t");
-    fprintf(fmodel,"%d\t",model->voiced);
-    fprintf(fmodel,"\n");
+    sprintf(line,"%12f %12d ", model->Wo, model->L);
+    for(l=1; l<=model->L; l++) {
+       sprintf(s,"%12f ",model->A[l]);
+        strcat(line, s);
+    }
+    for(l=model->L+1; l<=MAX_AMP; l++) {
+       sprintf(s,"%12f ", 0.0);
+        strcat(line,s);
+    }
+
+    sprintf(s,"%d\n",model->voiced);
+    strcat(line,s);
+    fprintf(fmodel,"%s",line);
 }
 
 void dump_quantised_model(MODEL *model) {
     int l;
     char s[MAX_STR];
+    char line[2048];
 
     if (!dumpon) return;
 
@@ -216,32 +249,19 @@ void dump_quantised_model(MODEL *model) {
        assert(fqmodel != NULL);
     }
 
-    fprintf(fqmodel,"%f\t%d\t", model->Wo, model->L);
-    for(l=1; l<=model->L; l++)
-       fprintf(fqmodel,"%f\t",model->A[l]);
-    for(l=model->L+1; l<MAX_AMP; l++)
-       fprintf(fqmodel,"0.0\t");
-    fprintf(fqmodel,"\n");
-}
-
-void dump_resample(float w[], float A[], int n) {
-    int l;
-    char s[MAX_STR];
-
-    if (!dumpon) return;
-
-    if (fres == NULL) {
-       sprintf(s,"%s_res.txt", prefix);
-       fres = fopen(s, "wt");
-       assert(fres != NULL);
+    sprintf(line,"%12f %12d ", model->Wo, model->L);
+    for(l=1; l<=model->L; l++) {
+       sprintf(s,"%12f ",model->A[l]);
+        strcat(line, s);
+    }
+    for(l=model->L+1; l<=MAX_AMP; l++) {
+       sprintf(s,"%12f ", 0.0);
+        strcat(line, s);
     }
 
-    fprintf(fres,"%d\t",n);
-    for(l=0; l<n; l++)
-       fprintf(fres,"%f\t",w[l]);
-    for(l=0; l<n; l++)
-       fprintf(fres,"%f\t",A[l]);
-    fprintf(fres,"\n");
+    sprintf(s,"%d\n",model->voiced);
+    strcat(line, s);
+    fprintf(fqmodel, "%s", line);
 }
 
 void dump_phase(float phase[], int L) {
@@ -258,7 +278,7 @@ void dump_phase(float phase[], int L) {
 
     for(l=1; l<=L; l++)
        fprintf(fphase,"%f\t",phase[l]);
-    for(l=L+1; l<MAX_AMP; l++)
+    for(l=L+1; l<=MAX_AMP; l++)
        fprintf(fphase,"%f\t",0.0);
     fprintf(fphase,"\n");
 }
@@ -282,6 +302,25 @@ void dump_phase_(float phase_[], int L) {
     fprintf(fphase_,"\n");
 }
 
+
+void dump_hephase(int ind[], int dim) {
+    int m;
+    char s[MAX_STR];
+
+    if (!dumpon) return;
+
+    if (fhephase == NULL) {
+       sprintf(s,"%s_hephase.txt", prefix);
+       fhephase = fopen(s, "wt");
+       assert(fhephase != NULL);
+    }
+
+    for(m=0; m<dim; m++)
+       fprintf(fhephase,"%d\t",ind[m]);
+    fprintf(fhephase,"\n");
+}
+
+
 void dump_snr(float snr) {
     char s[MAX_STR];
 
@@ -296,6 +335,39 @@ void dump_snr(float snr) {
     fprintf(fsnr,"%f\n",snr);
 }
 
+void dump_lpc_snr(float snr) {
+    char s[MAX_STR];
+
+    if (!dumpon) return;
+
+    if (flpcsnr == NULL) {
+       sprintf(s,"%s_lpc_snr.txt", prefix);
+       flpcsnr = fopen(s, "wt");
+       assert(flpcsnr != NULL);
+    }
+
+    fprintf(flpcsnr,"%f\n",snr);
+}
+
+/* Pw "before" post filter so we can plot before and after */
+
+void dump_Pwb(COMP Pwb[]) {
+    int i;
+    char s[MAX_STR];
+
+    if (!dumpon) return;
+
+    if (fpwb == NULL) {
+       sprintf(s,"%s_pwb.txt", prefix);
+       fpwb = fopen(s, "wt");
+       assert(fpwb != NULL);
+    }
+
+    for(i=0; i<FFT_ENC/2; i++)
+       fprintf(fpwb,"%f\t",Pwb[i].real);
+    fprintf(fpwb,"\n");
+}
+
 void dump_Pw(COMP Pw[]) {
     int i;
     char s[MAX_STR];
@@ -308,11 +380,45 @@ void dump_Pw(COMP Pw[]) {
        assert(fpw != NULL);
     }
 
-    for(i=0; i<FFT_DEC/2; i++)
+    for(i=0; i<FFT_ENC/2; i++)
        fprintf(fpw,"%f\t",Pw[i].real);
     fprintf(fpw,"\n");
 }
 
+void dump_Rw(float Rw[]) {
+    int i;
+    char s[MAX_STR];
+
+    if (!dumpon) return;
+
+    if (frw == NULL) {
+       sprintf(s,"%s_rw.txt", prefix);
+       frw = fopen(s, "wt");
+       assert(frw != NULL);
+    }
+
+    for(i=0; i<FFT_ENC/2; i++)
+       fprintf(frw,"%f\t",Rw[i]);
+    fprintf(frw,"\n");
+}
+
+void dump_weights(float w[], int order) {
+    int i;
+    char s[MAX_STR];
+
+    if (!dumpon) return;
+
+    if (fweights == NULL) {
+       sprintf(s,"%s_weights.txt", prefix);
+       fweights = fopen(s, "wt");
+       assert(fweights != NULL);
+    }
+
+    for(i=0; i<order; i++)
+       fprintf(fweights,"%f\t", w[i]);
+    fprintf(fweights,"\n");
+}
+
 void dump_lsp(float lsp[]) {
     int i;
     char s[MAX_STR];
@@ -330,6 +436,23 @@ void dump_lsp(float lsp[]) {
     fprintf(flsp,"\n");
 }
 
+void dump_lsp_(float lsp_[]) {
+    int i;
+    char s[MAX_STR];
+
+    if (!dumpon) return;
+
+    if (flsp_ == NULL) {
+       sprintf(s,"%s_lsp_.txt", prefix);
+       flsp_ = fopen(s, "wt");
+       assert(flsp_ != NULL);
+    }
+
+    for(i=0; i<10; i++)
+       fprintf(flsp_,"%f\t",lsp_[i]);
+    fprintf(flsp_,"\n");
+}
+
 void dump_ak(float ak[], int order) {
     int i;
     char s[MAX_STR];
@@ -347,6 +470,23 @@ void dump_ak(float ak[], int order) {
     fprintf(fak,"\n");
 }
 
+void dump_ak_(float ak_[], int order) {
+    int i;
+    char s[MAX_STR];
+
+    if (!dumpon) return;
+
+    if (fak_ == NULL) {
+       sprintf(s,"%s_ak_.txt", prefix);
+       fak_ = fopen(s, "wt");
+       assert(fak_ != NULL);
+    }
+
+    for(i=0; i<=order; i++)
+       fprintf(fak_,"%f\t",ak_[i]);
+    fprintf(fak_,"\n");
+}
+
 void dump_Fw(COMP Fw[]) {
     int i;
     char s[MAX_STR];
diff --git a/gr-vocoder/lib/codec2/dump.h b/gr-vocoder/lib/codec2/dump.h
index 4b92d00..a61fdaa 100644
--- a/gr-vocoder/lib/codec2/dump.h
+++ b/gr-vocoder/lib/codec2/dump.h
@@ -26,7 +26,10 @@
 #ifndef __DUMP__
 #define __DUMP__
 
+#include "defines.h"
 #include "comp.h"
+#include "kiss_fft.h"
+#include "codec2_internal.h"
 
 void dump_on(char filename_prefix[]);
 void dump_off();
@@ -40,17 +43,23 @@ void dump_Ew(COMP Ew[]);
 
 void dump_model(MODEL *m);
 void dump_quantised_model(MODEL *m);
+void dump_Pwn(COMP Pw[]);
 void dump_Pw(COMP Pw[]);
+void dump_Rw(float Rw[]);
 void dump_lsp(float lsp[]);
+void dump_weights(float w[], int ndim);
+void dump_lsp_(float lsp_[]);
 void dump_ak(float ak[], int order);
+void dump_ak_(float ak[], int order);
 void dump_E(float E);
-void dump_resample(float w[], float A[], int n);
+void dump_lpc_snr(float snr);
 
 /* phase modelling */
 
 void dump_snr(float snr);
 void dump_phase(float phase[], int L);
 void dump_phase_(float phase[], int L);
+void dump_hephase(int ind[], int dim);
 
 /* NLP states */
 
@@ -63,5 +72,6 @@ void dump_Rk(float Rk[]);
 /* post filter */
 
 void dump_bg(float e, float bg_est, float percent_uv);
+void dump_Pwb(COMP Pwb[]);
 
 #endif
diff --git a/gr-vocoder/lib/codec2/fdmdv.c b/gr-vocoder/lib/codec2/fdmdv.c
new file mode 100644
index 0000000..6af1cf4
--- /dev/null
+++ b/gr-vocoder/lib/codec2/fdmdv.c
@@ -0,0 +1,1569 @@
+/*---------------------------------------------------------------------------*\
+
+  FILE........: fdmdv.c
+  AUTHOR......: David Rowe
+  DATE CREATED: April 14 2012
+
+  Functions that implement the FDMDV modem.
+
+\*---------------------------------------------------------------------------*/
+
+/*
+  Copyright (C) 2012 David Rowe
+
+  All rights reserved.
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU Lesser General Public License version 2.1, as
+  published by the Free Software Foundation.  This program is
+  distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or
+  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+  License for more details.
+
+  You should have received a copy of the GNU Lesser General Public License
+  along with this program; if not, see <http://www.gnu.org/licenses/>.
+*/
+
+/*---------------------------------------------------------------------------*\
+
+                               INCLUDES
+
+\*---------------------------------------------------------------------------*/
+
+#include <assert.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+
+#include "fdmdv_internal.h"
+#include "codec2_fdmdv.h"
+#include "rn.h"
+#include "test_bits.h"
+#include "pilot_coeff.h"
+#include "kiss_fft.h"
+#include "hanning.h"
+#include "os.h"
+
+static int sync_uw[] = {1,-1,1,-1,1,-1};
+
+/*---------------------------------------------------------------------------* 
\
+
+                               FUNCTIONS
+
+\*---------------------------------------------------------------------------*/
+
+static COMP cneg(COMP a)
+{
+    COMP res;
+
+    res.real = -a.real;
+    res.imag = -a.imag;
+
+    return res;
+}
+
+static COMP cconj(COMP a)
+{
+    COMP res;
+
+    res.real = a.real;
+    res.imag = -a.imag;
+
+    return res;
+}
+
+static COMP cmult(COMP a, COMP b)
+{
+    COMP res;
+
+    res.real = a.real*b.real - a.imag*b.imag;
+    res.imag = a.real*b.imag + a.imag*b.real;
+
+    return res;
+}
+
+static COMP fcmult(float a, COMP b)
+{
+    COMP res;
+
+    res.real = a*b.real;
+    res.imag = a*b.imag;
+
+    return res;
+}
+
+static COMP cadd(COMP a, COMP b)
+{
+    COMP res;
+
+    res.real = a.real + b.real;
+    res.imag = a.imag + b.imag;
+
+    return res;
+}
+
+static float cabsolute(COMP a)
+{
+    return sqrt(pow(a.real, 2.0) + pow(a.imag, 2.0));
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: fdmdv_create
+  AUTHOR......: David Rowe
+  DATE CREATED: 16/4/2012
+
+  Create and initialise an instance of the modem.  Returns a pointer
+  to the modem states or NULL on failure.  One set of states is
+  sufficient for a full duplex modem.
+
+\*---------------------------------------------------------------------------*/
+
+struct FDMDV * CODEC2_WIN32SUPPORT fdmdv_create(int Nc)
+{
+    struct FDMDV *f;
+    int           c, i, k;
+
+    assert(NC == FDMDV_NC_MAX);  /* check public and private #defines match */
+    assert(Nc <= NC);
+    assert(FDMDV_NOM_SAMPLES_PER_FRAME == M);
+    assert(FDMDV_MAX_SAMPLES_PER_FRAME == (M+M/P));
+
+    f = (struct FDMDV*)malloc(sizeof(struct FDMDV));
+    if (f == NULL)
+       return NULL;
+
+    f->Nc = Nc;
+
+    f->ntest_bits = Nc*NB*4;
+    f->current_test_bit = 0;
+    f->rx_test_bits_mem = (int*)malloc(sizeof(int)*f->ntest_bits);
+    assert(f->rx_test_bits_mem != NULL);
+    for(i=0; i<f->ntest_bits; i++)
+       f->rx_test_bits_mem[i] = 0;
+    assert((sizeof(test_bits)/sizeof(int)) >= f->ntest_bits);
+
+    f->old_qpsk_mapping = 0;
+
+    f->tx_pilot_bit = 0;
+
+    for(c=0; c<Nc+1; c++) {
+       f->prev_tx_symbols[c].real = 1.0;
+       f->prev_tx_symbols[c].imag = 0.0;
+       f->prev_rx_symbols[c].real = 1.0;
+       f->prev_rx_symbols[c].imag = 0.0;
+
+       for(k=0; k<NSYM; k++) {
+           f->tx_filter_memory[c][k].real = 0.0;
+           f->tx_filter_memory[c][k].imag = 0.0;
+       }
+
+       for(k=0; k<NFILTER; k++) {
+           f->rx_filter_memory[c][k].real = 0.0;
+           f->rx_filter_memory[c][k].imag = 0.0;
+       }
+
+       /* Spread initial FDM carrier phase out as far as possible.
+           This helped PAPR for a few dB.  We don't need to adjust rx
+           phase as DQPSK takes care of that. */
+
+       f->phase_tx[c].real = cos(2.0*PI*c/(Nc+1));
+       f->phase_tx[c].imag = sin(2.0*PI*c/(Nc+1));
+
+       f->phase_rx[c].real = 1.0;
+       f->phase_rx[c].imag = 0.0;
+
+       for(k=0; k<NT*P; k++) {
+           f->rx_filter_mem_timing[c][k].real = 0.0;
+           f->rx_filter_mem_timing[c][k].imag = 0.0;
+       }
+       for(k=0; k<NFILTERTIMING; k++) {
+           f->rx_baseband_mem_timing[c][k].real = 0.0;
+           f->rx_baseband_mem_timing[c][k].imag = 0.0;
+       }
+    }
+
+    fdmdv_set_fsep(f, FSEP);
+    f->freq[Nc].real = cos(2.0*PI*FDMDV_FCENTRE/FS);
+    f->freq[Nc].imag = sin(2.0*PI*FDMDV_FCENTRE/FS);
+
+    /* Generate DBPSK pilot Look Up Table (LUT) */
+
+    generate_pilot_lut(f->pilot_lut, &f->freq[Nc]);
+
+    /* freq Offset estimation states */
+
+    f->fft_pilot_cfg = kiss_fft_alloc (MPILOTFFT, 0, NULL, NULL);
+    assert(f->fft_pilot_cfg != NULL);
+
+    for(i=0; i<NPILOTBASEBAND; i++) {
+       f->pilot_baseband1[i].real = f->pilot_baseband2[i].real = 0.0;
+       f->pilot_baseband1[i].imag = f->pilot_baseband2[i].imag = 0.0;
+    }
+    f->pilot_lut_index = 0;
+    f->prev_pilot_lut_index = 3*M;
+
+    for(i=0; i<NPILOTLPF; i++) {
+       f->pilot_lpf1[i].real = f->pilot_lpf2[i].real = 0.0;
+       f->pilot_lpf1[i].imag = f->pilot_lpf2[i].imag = 0.0;
+    }
+
+    f->foff = 0.0;
+    f->foff_rect.real = 1.0;
+    f->foff_rect.imag = 0.0;
+    f->foff_phase_rect.real = 1.0;
+    f->foff_phase_rect.imag = 0.0;
+
+    f->fest_state = 0;
+    f->sync = 0;
+    f->timer = 0;
+    for(i=0; i<NSYNC_MEM; i++)
+        f->sync_mem[i] = 0;
+
+    for(c=0; c<Nc+1; c++) {
+       f->sig_est[c] = 0.0;
+       f->noise_est[c] = 0.0;
+    }
+
+    for(i=0; i<2*FDMDV_NSPEC; i++)
+       f->fft_buf[i] = 0.0;
+    f->fft_cfg = kiss_fft_alloc (2*FDMDV_NSPEC, 0, NULL, NULL);
+    assert(f->fft_cfg != NULL);
+
+
+    return f;
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: fdmdv_destroy
+  AUTHOR......: David Rowe
+  DATE CREATED: 16/4/2012
+
+  Destroy an instance of the modem.
+
+\*---------------------------------------------------------------------------*/
+
+void CODEC2_WIN32SUPPORT fdmdv_destroy(struct FDMDV *fdmdv)
+{
+    assert(fdmdv != NULL);
+    KISS_FFT_FREE(fdmdv->fft_pilot_cfg);
+    KISS_FFT_FREE(fdmdv->fft_cfg);
+    free(fdmdv->rx_test_bits_mem);
+    free(fdmdv);
+}
+
+
+void CODEC2_WIN32SUPPORT fdmdv_use_old_qpsk_mapping(struct FDMDV *fdmdv) {
+    fdmdv->old_qpsk_mapping = 1;
+}
+
+
+int CODEC2_WIN32SUPPORT fdmdv_bits_per_frame(struct FDMDV *fdmdv)
+{
+    return (fdmdv->Nc * NB);
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: fdmdv_get_test_bits()
+  AUTHOR......: David Rowe
+  DATE CREATED: 16/4/2012
+
+  Generate a frame of bits from a repeating sequence of random data.  OK so
+  it's not very random if it repeats but it makes syncing at the demod easier
+  for test purposes.
+
+\*---------------------------------------------------------------------------*/
+
+void CODEC2_WIN32SUPPORT fdmdv_get_test_bits(struct FDMDV *f, int tx_bits[])
+{
+    int i;
+    int bits_per_frame = fdmdv_bits_per_frame(f);
+
+    for(i=0; i<bits_per_frame; i++) {
+       tx_bits[i] = test_bits[f->current_test_bit];
+       f->current_test_bit++;
+       if (f->current_test_bit > (f->ntest_bits-1))
+           f->current_test_bit = 0;
+    }
+ }
+
+float CODEC2_WIN32SUPPORT fdmdv_get_fsep(struct FDMDV *f)
+{
+    return f->fsep;
+}
+
+void CODEC2_WIN32SUPPORT fdmdv_set_fsep(struct FDMDV *f, float fsep) {
+    int   c;
+    float carrier_freq;
+
+    f->fsep = fsep;
+    /* Set up frequency of each carrier */
+
+    for(c=0; c<f->Nc/2; c++) {
+       carrier_freq = (-f->Nc/2 + c)*f->fsep + FDMDV_FCENTRE;
+       f->freq[c].real = cos(2.0*PI*carrier_freq/FS);
+       f->freq[c].imag = sin(2.0*PI*carrier_freq/FS);
+    }
+
+    for(c=f->Nc/2; c<f->Nc; c++) {
+       carrier_freq = (-f->Nc/2 + c + 1)*f->fsep + FDMDV_FCENTRE;
+       f->freq[c].real = cos(2.0*PI*carrier_freq/FS);
+       f->freq[c].imag = sin(2.0*PI*carrier_freq/FS);
+    }
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: bits_to_dqpsk_symbols()
+  AUTHOR......: David Rowe
+  DATE CREATED: 16/4/2012
+
+  Maps bits to parallel DQPSK symbols. Generate Nc+1 QPSK symbols from
+  vector of (1,Nc*Nb) input tx_bits.  The Nc+1 symbol is the +1 -1 +1
+  .... BPSK sync carrier.
+
+\*---------------------------------------------------------------------------*/
+
+void bits_to_dqpsk_symbols(COMP tx_symbols[], int Nc, COMP prev_tx_symbols[], 
int tx_bits[], int *pilot_bit, int old_qpsk_mapping)
+{
+    int c, msb, lsb;
+    COMP j = {0.0,1.0};
+
+    /* Map tx_bits to to Nc DQPSK symbols.  Note legacy support for
+       old (suboptimal) V0.91 FreeDV mapping */
+
+    for(c=0; c<Nc; c++) {
+       msb = tx_bits[2*c];
+       lsb = tx_bits[2*c+1];
+       if ((msb == 0) && (lsb == 0))
+           tx_symbols[c] = prev_tx_symbols[c];
+       if ((msb == 0) && (lsb == 1))
+            tx_symbols[c] = cmult(j, prev_tx_symbols[c]);
+       if ((msb == 1) && (lsb == 0)) {
+           if (old_qpsk_mapping)
+                tx_symbols[c] = cneg(prev_tx_symbols[c]);
+            else
+                tx_symbols[c] = cmult(cneg(j),prev_tx_symbols[c]);
+        }
+       if ((msb == 1) && (lsb == 1)) {
+           if (old_qpsk_mapping)
+                tx_symbols[c] = cmult(cneg(j),prev_tx_symbols[c]);
+            else
+                tx_symbols[c] = cneg(prev_tx_symbols[c]);
+        }
+    }
+
+    /* +1 -1 +1 -1 BPSK sync carrier, once filtered becomes (roughly)
+       two spectral lines at +/- Rs/2 */
+
+    if (*pilot_bit)
+       tx_symbols[Nc] = cneg(prev_tx_symbols[Nc]);
+    else
+       tx_symbols[Nc] = prev_tx_symbols[Nc];
+
+    if (*pilot_bit)
+       *pilot_bit = 0;
+    else
+       *pilot_bit = 1;
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: tx_filter()
+  AUTHOR......: David Rowe
+  DATE CREATED: 17/4/2012
+
+  Given Nc*NB bits construct M samples (1 symbol) of Nc+1 filtered
+  symbols streams.
+
+\*---------------------------------------------------------------------------*/
+
+void tx_filter(COMP tx_baseband[NC+1][M], int Nc, COMP tx_symbols[], COMP 
tx_filter_memory[NC+1][NSYM])
+{
+    int     c;
+    int     i,j,k;
+    float   acc;
+    COMP    gain;
+
+    gain.real = sqrt(2.0)/2.0;
+    gain.imag = 0.0;
+
+    for(c=0; c<Nc+1; c++)
+       tx_filter_memory[c][NSYM-1] = cmult(tx_symbols[c], gain);
+
+    /*
+       tx filter each symbol, generate M filtered output samples for each 
symbol.
+       Efficient polyphase filter techniques used as tx_filter_memory is sparse
+    */
+
+    for(i=0; i<M; i++) {
+       for(c=0; c<Nc+1; c++) {
+
+           /* filter real sample of symbol for carrier c */
+
+           acc = 0.0;
+           for(j=0,k=M-i-1; j<NSYM; j++,k+=M)
+               acc += M * tx_filter_memory[c][j].real * gt_alpha5_root[k];
+           tx_baseband[c][i].real = acc;
+
+           /* filter imag sample of symbol for carrier c */
+
+           acc = 0.0;
+           for(j=0,k=M-i-1; j<NSYM; j++,k+=M)
+               acc += M * tx_filter_memory[c][j].imag * gt_alpha5_root[k];
+           tx_baseband[c][i].imag = acc;
+
+       }
+    }
+
+    /* shift memory, inserting zeros at end */
+
+    for(i=0; i<NSYM-1; i++)
+       for(c=0; c<Nc+1; c++)
+           tx_filter_memory[c][i] = tx_filter_memory[c][i+1];
+
+    for(c=0; c<Nc+1; c++) {
+       tx_filter_memory[c][NSYM-1].real = 0.0;
+       tx_filter_memory[c][NSYM-1].imag = 0.0;
+    }
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: fdm_upconvert()
+  AUTHOR......: David Rowe
+  DATE CREATED: 17/4/2012
+
+  Construct FDM signal by frequency shifting each filtered symbol
+  stream.  Returns complex signal so we can apply frequency offsets
+  easily.
+
+\*---------------------------------------------------------------------------*/
+
+void fdm_upconvert(COMP tx_fdm[], int Nc, COMP tx_baseband[NC+1][M], COMP 
phase_tx[], COMP freq[])
+{
+    int  i,c;
+    COMP two = {2.0, 0.0};
+    COMP pilot;
+
+    for(i=0; i<M; i++) {
+       tx_fdm[i].real = 0.0;
+       tx_fdm[i].imag = 0.0;
+    }
+
+    /* Nc/2 tones below centre freq */
+
+    for (c=0; c<Nc/2; c++)
+       for (i=0; i<M; i++) {
+           phase_tx[c] = cmult(phase_tx[c], freq[c]);
+           tx_fdm[i] = cadd(tx_fdm[i], cmult(tx_baseband[c][i], phase_tx[c]));
+       }
+
+    /* Nc/2 tones above centre freq */
+
+    for (c=Nc/2; c<Nc; c++)
+       for (i=0; i<M; i++) {
+           phase_tx[c] = cmult(phase_tx[c], freq[c]);
+           tx_fdm[i] = cadd(tx_fdm[i], cmult(tx_baseband[c][i], phase_tx[c]));
+       }
+
+    /* add centre pilot tone  */
+
+    c = Nc;
+    for (i=0; i<M; i++) {
+       phase_tx[c] = cmult(phase_tx[c],  freq[c]);
+       pilot = cmult(cmult(two, tx_baseband[c][i]), phase_tx[c]);
+       tx_fdm[i] = cadd(tx_fdm[i], pilot);
+    }
+
+    /*
+      Scale such that total Carrier power C of real(tx_fdm) = Nc.  This
+      excludes the power of the pilot tone.
+      We return the complex (single sided) signal to make frequency
+      shifting for the purpose of testing easier
+    */
+
+    for (i=0; i<M; i++)
+       tx_fdm[i] = cmult(two, tx_fdm[i]);
+
+    /* normalise digital oscilators as the magnitude can drfift over time */
+
+    for (c=0; c<Nc+1; c++) {
+       phase_tx[c].real /= cabsolute(phase_tx[c]);
+       phase_tx[c].imag /= cabsolute(phase_tx[c]);
+    }
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: fdmdv_mod()
+  AUTHOR......: David Rowe
+  DATE CREATED: 26/4/2012
+
+  FDMDV modulator, take a frame of FDMDV_BITS_PER_FRAME bits and
+  generates a frame of FDMDV_SAMPLES_PER_FRAME modulated symbols.
+  Sync bit is returned to aid alignment of your next frame.
+
+  The sync_bit value returned will be used for the _next_ frame.
+
+  The output signal is complex to support single sided frequency
+  shifting, for example when testing frequency offsets in channel
+  simulation.
+
+\*---------------------------------------------------------------------------*/
+
+void CODEC2_WIN32SUPPORT fdmdv_mod(struct FDMDV *fdmdv, COMP tx_fdm[],
+                                  int tx_bits[], int *sync_bit)
+{
+    COMP          tx_symbols[NC+1];
+    COMP          tx_baseband[NC+1][M];
+
+    bits_to_dqpsk_symbols(tx_symbols, fdmdv->Nc, fdmdv->prev_tx_symbols, 
tx_bits, &fdmdv->tx_pilot_bit, fdmdv->old_qpsk_mapping);
+    memcpy(fdmdv->prev_tx_symbols, tx_symbols, sizeof(COMP)*(fdmdv->Nc+1));
+    tx_filter(tx_baseband, fdmdv->Nc, tx_symbols, fdmdv->tx_filter_memory);
+    fdm_upconvert(tx_fdm, fdmdv->Nc, tx_baseband, fdmdv->phase_tx, 
fdmdv->freq);
+
+    *sync_bit = fdmdv->tx_pilot_bit;
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: generate_pilot_fdm()
+  AUTHOR......: David Rowe
+  DATE CREATED: 19/4/2012
+
+  Generate M samples of DBPSK pilot signal for Freq offset estimation.
+
+\*---------------------------------------------------------------------------*/
+
+void generate_pilot_fdm(COMP *pilot_fdm, int *bit, float *symbol,
+                       float *filter_mem, COMP *phase, COMP *freq)
+{
+    int   i,j,k;
+    float tx_baseband[M];
+
+    /* +1 -1 +1 -1 DBPSK sync carrier, once filtered becomes (roughly)
+       two spectral lines at +/- RS/2 */
+
+    if (*bit)
+       *symbol = -*symbol;
+    else
+       *symbol = *symbol;
+    if (*bit)
+       *bit = 0;
+    else
+       *bit = 1;
+
+    /* filter DPSK symbol to create M baseband samples */
+
+    filter_mem[NFILTER-1] = (sqrt(2)/2) * *symbol;
+    for(i=0; i<M; i++) {
+       tx_baseband[i] = 0.0;
+       for(j=M-1,k=M-i-1; j<NFILTER; j+=M,k+=M)
+           tx_baseband[i] += M * filter_mem[j] * gt_alpha5_root[k];
+    }
+
+    /* shift memory, inserting zeros at end */
+
+    for(i=0; i<NFILTER-M; i++)
+       filter_mem[i] = filter_mem[i+M];
+
+    for(i=NFILTER-M; i<NFILTER; i++)
+       filter_mem[i] = 0.0;
+
+    /* upconvert */
+
+    for(i=0; i<M; i++) {
+       *phase = cmult(*phase, *freq);
+       pilot_fdm[i].real = sqrt(2)*2*tx_baseband[i] * phase->real;
+       pilot_fdm[i].imag = sqrt(2)*2*tx_baseband[i] * phase->imag;
+    }
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: generate_pilot_lut()
+  AUTHOR......: David Rowe
+  DATE CREATED: 19/4/2012
+
+  Generate a 4M sample vector of DBPSK pilot signal.  As the pilot signal
+  is periodic in 4M samples we can then use this vector as a look up table
+  for pilot signal generation in the demod.
+
+\*---------------------------------------------------------------------------*/
+
+void generate_pilot_lut(COMP pilot_lut[], COMP *pilot_freq)
+{
+    int   pilot_rx_bit = 0;
+    float pilot_symbol = sqrt(2.0);
+    COMP  pilot_phase  = {1.0, 0.0};
+    float pilot_filter_mem[NFILTER];
+    COMP  pilot[M];
+    int   i,f;
+
+    for(i=0; i<NFILTER; i++)
+       pilot_filter_mem[i] = 0.0;
+
+    /* discard first 4 symbols as filter memory is filling, just keep
+       last four symbols */
+
+    for(f=0; f<8; f++) {
+       generate_pilot_fdm(pilot, &pilot_rx_bit, &pilot_symbol, 
pilot_filter_mem, &pilot_phase, pilot_freq);
+       if (f >= 4)
+           memcpy(&pilot_lut[M*(f-4)], pilot, M*sizeof(COMP));
+    }
+
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: lpf_peak_pick()
+  AUTHOR......: David Rowe
+  DATE CREATED: 20/4/2012
+
+  LPF and peak pick part of freq est, put in a function as we call it twice.
+
+\*---------------------------------------------------------------------------*/
+
+void lpf_peak_pick(float *foff, float *max, COMP pilot_baseband[],
+                  COMP pilot_lpf[], kiss_fft_cfg fft_pilot_cfg, COMP S[], int 
nin)
+{
+    int   i,j,k;
+    int   mpilot;
+    COMP  s[MPILOTFFT];
+    float mag, imax;
+    int   ix;
+    float r;
+
+    /* LPF cutoff 200Hz, so we can handle max +/- 200 Hz freq offset */
+
+    for(i=0; i<NPILOTLPF-nin; i++)
+       pilot_lpf[i] = pilot_lpf[nin+i];
+    for(i=NPILOTLPF-nin, j=0; i<NPILOTLPF; i++,j++) {
+       pilot_lpf[i].real = 0.0; pilot_lpf[i].imag = 0.0;
+       for(k=0; k<NPILOTCOEFF; k++)
+           pilot_lpf[i] = cadd(pilot_lpf[i], fcmult(pilot_coeff[k], 
pilot_baseband[j+k]));
+    }
+
+    /* decimate to improve DFT resolution, window and DFT */
+
+    mpilot = FS/(2*200);  /* calc decimation rate given new sample rate is 
twice LPF freq */
+    for(i=0; i<MPILOTFFT; i++) {
+       s[i].real = 0.0; s[i].imag = 0.0;
+    }
+    for(i=0,j=0; i<NPILOTLPF; i+=mpilot,j++) {
+       s[j] = fcmult(hanning[i], pilot_lpf[i]);
+    }
+
+    kiss_fft(fft_pilot_cfg, (kiss_fft_cpx *)s, (kiss_fft_cpx *)S);
+
+    /* peak pick and convert to Hz */
+
+    imax = 0.0;
+    ix = 0;
+    for(i=0; i<MPILOTFFT; i++) {
+       mag = S[i].real*S[i].real + S[i].imag*S[i].imag;
+       if (mag > imax) {
+           imax = mag;
+           ix = i;
+       }
+    }
+    r = 2.0*200.0/MPILOTFFT;     /* maps FFT bin to frequency in Hz */
+
+    if (ix >= MPILOTFFT/2)
+       *foff = (ix - MPILOTFFT)*r;
+    else
+       *foff = (ix)*r;
+    *max = imax;
+
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: rx_est_freq_offset()
+  AUTHOR......: David Rowe
+  DATE CREATED: 19/4/2012
+
+  Estimate frequency offset of FDM signal using BPSK pilot.  Note that
+  this algorithm is quite sensitive to pilot tone level wrt other
+  carriers, so test variations to the pilot amplitude carefully.
+
+\*---------------------------------------------------------------------------*/
+
+float rx_est_freq_offset(struct FDMDV *f, COMP rx_fdm[], int nin)
+{
+    int  i,j;
+    COMP pilot[M+M/P];
+    COMP prev_pilot[M+M/P];
+    float foff, foff1, foff2;
+    float   max1, max2;
+
+    assert(nin <= M+M/P);
+
+    /* get pilot samples used for correlation/down conversion of rx signal */
+
+    for (i=0; i<nin; i++) {
+       pilot[i] = f->pilot_lut[f->pilot_lut_index];
+       f->pilot_lut_index++;
+       if (f->pilot_lut_index >= 4*M)
+           f->pilot_lut_index = 0;
+
+       prev_pilot[i] = f->pilot_lut[f->prev_pilot_lut_index];
+       f->prev_pilot_lut_index++;
+       if (f->prev_pilot_lut_index >= 4*M)
+           f->prev_pilot_lut_index = 0;
+    }
+
+    /*
+      Down convert latest M samples of pilot by multiplying by ideal
+      BPSK pilot signal we have generated locally.  The peak of the
+      resulting signal is sensitive to the time shift between the
+      received and local version of the pilot, so we do it twice at
+      different time shifts and choose the maximum.
+    */
+
+    for(i=0; i<NPILOTBASEBAND-nin; i++) {
+       f->pilot_baseband1[i] = f->pilot_baseband1[i+nin];
+       f->pilot_baseband2[i] = f->pilot_baseband2[i+nin];
+    }
+
+    for(i=0,j=NPILOTBASEBAND-nin; i<nin; i++,j++) {
+               f->pilot_baseband1[j] = cmult(rx_fdm[i], cconj(pilot[i]));
+       f->pilot_baseband2[j] = cmult(rx_fdm[i], cconj(prev_pilot[i]));
+    }
+
+    lpf_peak_pick(&foff1, &max1, f->pilot_baseband1, f->pilot_lpf1, 
f->fft_pilot_cfg, f->S1, nin);
+    lpf_peak_pick(&foff2, &max2, f->pilot_baseband2, f->pilot_lpf2, 
f->fft_pilot_cfg, f->S2, nin);
+
+    if (max1 > max2)
+       foff = foff1;
+    else
+       foff = foff2;
+
+    return foff;
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: fdmdv_freq_shift()
+  AUTHOR......: David Rowe
+  DATE CREATED: 26/4/2012
+
+  Frequency shift modem signal.  The use of complex input and output allows
+  single sided frequency shifting (no images).
+
+\*---------------------------------------------------------------------------*/
+
+void CODEC2_WIN32SUPPORT fdmdv_freq_shift(COMP rx_fdm_fcorr[], COMP rx_fdm[], 
float foff,
+                                          COMP *foff_rect, COMP 
*foff_phase_rect, int nin)
+{
+    int   i;
+
+    foff_rect->real = cos(2.0*PI*foff/FS);
+    foff_rect->imag = sin(2.0*PI*foff/FS);
+    for(i=0; i<nin; i++) {
+       *foff_phase_rect = cmult(*foff_phase_rect, *foff_rect);
+       rx_fdm_fcorr[i] = cmult(rx_fdm[i], *foff_phase_rect);
+    }
+
+    /* normalise digital oscilator as the magnitude can drfift over time */
+
+    foff_phase_rect->real /= cabsolute(*foff_phase_rect);
+    foff_phase_rect->imag /= cabsolute(*foff_phase_rect);
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: fdm_downconvert()
+  AUTHOR......: David Rowe
+  DATE CREATED: 22/4/2012
+
+  Frequency shift each modem carrier down to Nc+1 baseband signals.
+
+\*---------------------------------------------------------------------------*/
+
+void fdm_downconvert(COMP rx_baseband[NC+1][M+M/P], int Nc, COMP rx_fdm[], 
COMP phase_rx[], COMP freq[], int nin)
+{
+    int  i,c;
+
+    /* maximum number of input samples to demod */
+
+    assert(nin <= (M+M/P));
+
+    /* Nc/2 tones below centre freq */
+
+    for (c=0; c<Nc/2; c++)
+       for (i=0; i<nin; i++) {
+           phase_rx[c] = cmult(phase_rx[c], freq[c]);
+           rx_baseband[c][i] = cmult(rx_fdm[i], cconj(phase_rx[c]));
+       }
+
+    /* Nc/2 tones above centre freq */
+
+    for (c=Nc/2; c<Nc; c++)
+       for (i=0; i<nin; i++) {
+           phase_rx[c] = cmult(phase_rx[c], freq[c]);
+           rx_baseband[c][i] = cmult(rx_fdm[i], cconj(phase_rx[c]));
+       }
+
+    /* centre pilot tone  */
+
+    c = Nc;
+    for (i=0; i<nin; i++) {
+       phase_rx[c] = cmult(phase_rx[c],  freq[c]);
+       rx_baseband[c][i] = cmult(rx_fdm[i], cconj(phase_rx[c]));
+    }
+
+    /* normalise digital oscilators as the magnitude can drift over time */
+
+    for (c=0; c<Nc+1; c++) {
+       phase_rx[c].real /= cabsolute(phase_rx[c]);
+       phase_rx[c].imag /= cabsolute(phase_rx[c]);
+    }
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: rx_filter()
+  AUTHOR......: David Rowe
+  DATE CREATED: 22/4/2012
+
+  Receive filter each baseband signal at oversample rate P.  Filtering at
+  rate P lowers CPU compared to rate M.
+
+  Depending on the number of input samples to the demod nin, we
+  produce P-1, P (usually), or P+1 filtered samples at rate P.  nin is
+  occasionally adjusted to compensate for timing slips due to
+  different tx and rx sample clocks.
+
+\*---------------------------------------------------------------------------*/
+
+void rx_filter(COMP rx_filt[NC+1][P+1], int Nc, COMP rx_baseband[NC+1][M+M/P], 
COMP rx_filter_memory[NC+1][NFILTER], int nin)
+{
+    int c, i,j,k,l;
+    int n=M/P;
+
+    /* rx filter each symbol, generate P filtered output samples for
+       each symbol.  Note we keep filter memory at rate M, it's just
+       the filter output at rate P */
+
+    for(i=0, j=0; i<nin; i+=n,j++) {
+
+       /* latest input sample */
+
+       for(c=0; c<Nc+1; c++)
+           for(k=NFILTER-n,l=i; k<NFILTER; k++,l++)
+               rx_filter_memory[c][k] = rx_baseband[c][l];
+
+       /* convolution (filtering) */
+
+       for(c=0; c<Nc+1; c++) {
+           rx_filt[c][j].real = 0.0; rx_filt[c][j].imag = 0.0;
+           for(k=0; k<NFILTER; k++)
+               rx_filt[c][j] = cadd(rx_filt[c][j], fcmult(gt_alpha5_root[k], 
rx_filter_memory[c][k]));
+       }
+
+       /* make room for next input sample */
+
+       for(c=0; c<Nc+1; c++)
+           for(k=0,l=n; k<NFILTER-n; k++,l++)
+               rx_filter_memory[c][k] = rx_filter_memory[c][l];
+    }
+
+    assert(j <= (P+1)); /* check for any over runs */
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: rx_est_timing()
+  AUTHOR......: David Rowe
+  DATE CREATED: 23/4/2012
+
+  Estimate optimum timing offset, re-filter receive symbols at optimum
+  timing estimate.
+
+\*---------------------------------------------------------------------------*/
+
+float rx_est_timing(COMP rx_symbols[],
+                    int  Nc,
+                   COMP rx_filt[NC+1][P+1],
+                   COMP rx_baseband[NC+1][M+M/P],
+                   COMP rx_filter_mem_timing[NC+1][NT*P],
+                   float env[],
+                   COMP rx_baseband_mem_timing[NC+1][NFILTERTIMING],
+                   int nin)
+{
+    int   c,i,j,k;
+    int   adjust, s;
+    COMP  x, phase, freq;
+    float rx_timing;
+
+    /*
+      nin  adjust
+      --------------------------------
+      120  -1 (one less rate P sample)
+      160   0 (nominal)
+      200   1 (one more rate P sample)
+    */
+
+    adjust = P - nin*P/M;
+
+    /* update buffer of NT rate P filtered symbols */
+
+    for(c=0; c<Nc+1; c++)
+       for(i=0,j=P-adjust; i<(NT-1)*P+adjust; i++,j++)
+           rx_filter_mem_timing[c][i] = rx_filter_mem_timing[c][j];
+    for(c=0; c<Nc+1; c++)
+       for(i=(NT-1)*P+adjust,j=0; i<NT*P; i++,j++)
+           rx_filter_mem_timing[c][i] = rx_filt[c][j];
+
+    /* sum envelopes of all carriers */
+
+    for(i=0; i<NT*P; i++) {
+       env[i] = 0.0;
+       for(c=0; c<Nc+1; c++)
+           env[i] += cabsolute(rx_filter_mem_timing[c][i]);
+    }
+
+    /* The envelope has a frequency component at the symbol rate.  The
+       phase of this frequency component indicates the timing.  So work
+       out single DFT at frequency 2*pi/P */
+
+    x.real = 0.0; x.imag = 0.0;
+    freq.real = cos(2*PI/P);
+    freq.imag = sin(2*PI/P);
+    phase.real = 1.0;
+    phase.imag = 0.0;
+
+    for(i=0; i<NT*P; i++) {
+       x = cadd(x, fcmult(env[i], phase));
+       phase = cmult(phase, freq);
+    }
+
+    /* Map phase to estimated optimum timing instant at rate M.  The
+       M/4 part was adjusted by experiment, I know not why.... */
+
+    rx_timing = atan2(x.imag, x.real)*M/(2*PI) + M/4;
+
+    if (rx_timing > M)
+       rx_timing -= M;
+    if (rx_timing < -M)
+       rx_timing += M;
+
+    /* rx_filt_mem_timing contains M + Nfilter + M samples of the
+       baseband signal at rate M this enables us to resample the
+       filtered rx symbol with M sample precision once we have
+       rx_timing */
+
+    for(c=0; c<Nc+1; c++)
+       for(i=0,j=nin; i<NFILTERTIMING-nin; i++,j++)
+           rx_baseband_mem_timing[c][i] = rx_baseband_mem_timing[c][j];
+    for(c=0; c<Nc+1; c++)
+       for(i=NFILTERTIMING-nin,j=0; i<NFILTERTIMING; i++,j++)
+           rx_baseband_mem_timing[c][i] = rx_baseband[c][j];
+
+    /* rx filter to get symbol for each carrier at estimated optimum
+       timing instant.  We use rate M filter memory to get fine timing
+       resolution. */
+
+    s = round(rx_timing) + M;
+    for(c=0; c<Nc+1; c++) {
+       rx_symbols[c].real = 0.0;
+       rx_symbols[c].imag = 0.0;
+       for(k=s,j=0; k<s+NFILTER; k++,j++)
+           rx_symbols[c] = cadd(rx_symbols[c], fcmult(gt_alpha5_root[j], 
rx_baseband_mem_timing[c][k]));
+    }
+
+    return rx_timing;
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: qpsk_to_bits()
+  AUTHOR......: David Rowe
+  DATE CREATED: 24/4/2012
+
+  Convert DQPSK symbols back to an array of bits, extracts sync bit
+  from DBPSK pilot, and also uses pilot to estimate fine frequency
+  error.
+
+\*---------------------------------------------------------------------------*/
+
+float qpsk_to_bits(int rx_bits[], int *sync_bit, int Nc, COMP 
phase_difference[], COMP prev_rx_symbols[],
+                   COMP rx_symbols[], int old_qpsk_mapping)
+{
+    int   c;
+    COMP  pi_on_4;
+    COMP  d;
+    int   msb=0, lsb=0;
+    float ferr, norm;
+
+    pi_on_4.real = cos(PI/4.0);
+    pi_on_4.imag = sin(PI/4.0);
+
+    /* Extra 45 degree clockwise lets us use real and imag axis as
+       decision boundaries. "norm" makes sure the phase subtraction
+       from the previous symbol doesn't affect the amplitude, which
+       leads to sensible scatter plots */
+
+    for(c=0; c<Nc; c++) {
+        norm = 1.0/(cabsolute(prev_rx_symbols[c])+1E-6);
+       phase_difference[c] = cmult(cmult(rx_symbols[c], 
fcmult(norm,cconj(prev_rx_symbols[c]))), pi_on_4);
+    }
+
+    /* map (Nc,1) DQPSK symbols back into an (1,Nc*Nb) array of bits */
+
+    for (c=0; c<Nc; c++) {
+      d = phase_difference[c];
+      if ((d.real >= 0) && (d.imag >= 0)) {
+          msb = 0; lsb = 0;
+      }
+      if ((d.real < 0) && (d.imag >= 0)) {
+          msb = 0; lsb = 1;
+      }
+      if ((d.real < 0) && (d.imag < 0)) {
+          if (old_qpsk_mapping) {
+              msb = 1; lsb = 0;
+          } else {
+              msb = 1; lsb = 1;
+          }
+      }
+      if ((d.real >= 0) && (d.imag < 0)) {
+          if (old_qpsk_mapping) {
+              msb = 1; lsb = 1;
+          } else {
+              msb = 1; lsb = 0;
+          }
+      }
+      rx_bits[2*c] = msb;
+      rx_bits[2*c+1] = lsb;
+    }
+
+    /* Extract DBPSK encoded Sync bit and fine freq offset estimate */
+
+    norm = 1.0/(cabsolute(prev_rx_symbols[Nc])+1E-6);
+    phase_difference[Nc] = cmult(rx_symbols[Nc], fcmult(norm, 
cconj(prev_rx_symbols[Nc])));
+    if (phase_difference[Nc].real < 0) {
+      *sync_bit = 1;
+      ferr = phase_difference[Nc].imag;
+    }
+    else {
+      *sync_bit = 0;
+      ferr = -phase_difference[Nc].imag;
+    }
+
+    /* pilot carrier gets an extra pi/4 rotation to make it consistent
+       with other carriers, as we need it for snr_update and scatter
+       diagram */
+
+    phase_difference[Nc] = cmult(phase_difference[Nc], pi_on_4);
+
+    return ferr;
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: snr_update()
+  AUTHOR......: David Rowe
+  DATE CREATED: 17 May 2012
+
+  Given phase differences update estimates of signal and noise levels.
+
+\*---------------------------------------------------------------------------*/
+
+void snr_update(float sig_est[], float noise_est[], int Nc, COMP 
phase_difference[])
+{
+    float s[NC+1];
+    COMP  refl_symbols[NC+1];
+    float n[NC+1];
+    COMP  pi_on_4;
+    int   c;
+
+    pi_on_4.real = cos(PI/4.0);
+    pi_on_4.imag = sin(PI/4.0);
+
+    /* mag of each symbol is distance from origin, this gives us a
+       vector of mags, one for each carrier. */
+
+    for(c=0; c<Nc+1; c++)
+       s[c] = cabsolute(phase_difference[c]);
+
+    /* signal mag estimate for each carrier is a smoothed version of
+       instantaneous magntitude, this gives us a vector of smoothed
+       mag estimates, one for each carrier. */
+
+    for(c=0; c<Nc+1; c++)
+       sig_est[c] = SNR_COEFF*sig_est[c] + (1.0 - SNR_COEFF)*s[c];
+
+    /* noise mag estimate is distance of current symbol from average
+       location of that symbol.  We reflect all symbols into the first
+       quadrant for convenience. */
+
+    for(c=0; c<Nc+1; c++) {
+       refl_symbols[c].real = fabs(phase_difference[c].real);
+       refl_symbols[c].imag = fabs(phase_difference[c].imag);
+       n[c] = cabsolute(cadd(fcmult(sig_est[c], pi_on_4), 
cneg(refl_symbols[c])));
+    }
+
+    /* noise mag estimate for each carrier is a smoothed version of
+       instantaneous noise mag, this gives us a vector of smoothed
+       noise power estimates, one for each carrier. */
+
+    for(c=0; c<Nc+1; c++)
+       noise_est[c] = SNR_COEFF*noise_est[c] + (1 - SNR_COEFF)*n[c];
+}
+
+// returns number of shorts in error_pattern[], one short per error
+
+int CODEC2_WIN32SUPPORT fdmdv_error_pattern_size(struct FDMDV *f) {
+    return f->ntest_bits;
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: fdmdv_put_test_bits()
+  AUTHOR......: David Rowe
+  DATE CREATED: 24/4/2012
+
+  Accepts nbits from rx and attempts to sync with test_bits sequence.
+  If sync OK measures bit errors.
+
+\*---------------------------------------------------------------------------*/
+
+void CODEC2_WIN32SUPPORT fdmdv_put_test_bits(struct FDMDV *f, int *sync, short 
error_pattern[],
+                                            int *bit_errors, int *ntest_bits,
+                                            int rx_bits[])
+{
+    int   i,j;
+    float ber;
+    int   bits_per_frame = fdmdv_bits_per_frame(f);
+
+    /* Append to our memory */
+
+    for(i=0,j=bits_per_frame; i<f->ntest_bits-bits_per_frame; i++,j++)
+       f->rx_test_bits_mem[i] = f->rx_test_bits_mem[j];
+    for(i=f->ntest_bits-bits_per_frame,j=0; i<f->ntest_bits; i++,j++)
+       f->rx_test_bits_mem[i] = rx_bits[j];
+
+    /* see how many bit errors we get when checked against test sequence */
+
+    *bit_errors = 0;
+    for(i=0; i<f->ntest_bits; i++) {
+        error_pattern[i] = test_bits[i] ^ f->rx_test_bits_mem[i];
+       *bit_errors += error_pattern[i];
+       //printf("%d %d %d %d\n", i, test_bits[i], f->rx_test_bits_mem[i], 
test_bits[i] ^ f->rx_test_bits_mem[i]);
+    }
+
+    /* if less than a thresh we are aligned and in sync with test sequence */
+
+    ber = (float)*bit_errors/f->ntest_bits;
+
+    *sync = 0;
+    if (ber < 0.2)
+       *sync = 1;
+
+    *ntest_bits = f->ntest_bits;
+
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: freq_state(()
+  AUTHOR......: David Rowe
+  DATE CREATED: 24/4/2012
+
+  Freq offset state machine.  Moves between coarse and fine states
+  based on BPSK pilot sequence.  Freq offset estimator occasionally
+  makes mistakes when used continuously.  So we use it until we have
+  acquired the BPSK pilot, then switch to a more robust "fine"
+  tracking algorithm.  If we lose sync we switch back to coarse mode
+  for fast re-acquisition of large frequency offsets.
+
+  The sync state is also useful for higher layers to determine when
+  there is valid FDMDV data for decoding.  We want to reliably and
+  quickly get into sync, stay in sync even on fading channels, and
+  fall out of sync quickly if tx stops or it's a false sync.
+
+  In multipath fading channels the BPSK sync carrier may be pushed
+  down in the noise, despite other carriers being at full strength.
+  We want to avoid loss of sync in these cases.
+
+\*---------------------------------------------------------------------------*/
+
+int freq_state(int *reliable_sync_bit, int sync_bit, int *state, int *timer, 
int *sync_mem)
+{
+    int next_state, sync, unique_word, i, corr;
+
+    /* look for 6 symbols (120ms) 101010 of sync sequence */
+
+    unique_word = 0;
+    for(i=0; i<NSYNC_MEM-1; i++)
+        sync_mem[i] = sync_mem[i+1];
+    sync_mem[i] = 1 - 2*sync_bit;
+    corr = 0;
+    for(i=0; i<NSYNC_MEM; i++)
+        corr += sync_mem[i]*sync_uw[i];
+    if (abs(corr) == NSYNC_MEM)
+        unique_word = 1;
+    *reliable_sync_bit = (corr == NSYNC_MEM);
+
+    /* iterate state machine */
+
+    next_state = *state;
+    switch(*state) {
+    case 0:
+       if (unique_word) {
+           next_state = 1;
+            *timer = 0;
+        }
+       break;
+    case 1:                  /* tentative sync state         */
+       if (unique_word) {
+            (*timer)++;
+            if (*timer == 25) /* sync has been good for 500ms */
+                next_state = 2;
+        }
+       else
+           next_state = 0;  /* quickly fall out of sync     */
+       break;
+    case 2:                  /* good sync state */
+       if (unique_word == 0) {
+            *timer = 0;
+           next_state = 3;
+        }
+       break;
+    case 3:                  /* tentative bad state, but could be a fade */
+       if (unique_word)
+           next_state = 2;
+       else  {
+            (*timer)++;
+            if (*timer == 50) /* wait for 1000ms in case sync comes back  */
+                next_state = 0;
+        }
+       break;
+    }
+
+    //printf("state: %d next_state: %d uw: %d timer: %d\n", *state, 
next_state, unique_word, *timer);
+    *state = next_state;
+    if (*state)
+       sync = 1;
+    else
+       sync = 0;
+
+    return sync;
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: fdmdv_demod()
+  AUTHOR......: David Rowe
+  DATE CREATED: 26/4/2012
+
+  FDMDV demodulator, take an array of FDMDV_SAMPLES_PER_FRAME
+  modulated samples, returns an array of FDMDV_BITS_PER_FRAME bits,
+  plus the sync bit.
+
+  The input signal is complex to support single sided frequency shifting
+  before the demod input (e.g. fdmdv2 click to tune feature).
+
+  The number of input samples nin will normally be M ==
+  FDMDV_SAMPLES_PER_FRAME.  However to adjust for differences in
+  transmit and receive sample clocks nin will occasionally be M-M/P,
+  or M+M/P.
+
+\*---------------------------------------------------------------------------*/
+
+void CODEC2_WIN32SUPPORT fdmdv_demod(struct FDMDV *fdmdv, int rx_bits[],
+                                    int *reliable_sync_bit, COMP rx_fdm[], int 
*nin)
+{
+    float         foff_coarse, foff_fine;
+    COMP          rx_fdm_fcorr[M+M/P];
+    COMP          rx_baseband[NC+1][M+M/P];
+    COMP          rx_filt[NC+1][P+1];
+    COMP          rx_symbols[NC+1];
+    float         env[NT*P];
+    int           sync_bit;
+
+    /* freq offset estimation and correction */
+
+    foff_coarse = rx_est_freq_offset(fdmdv, rx_fdm, *nin);
+
+    if (fdmdv->sync == 0)
+       fdmdv->foff = foff_coarse;
+    fdmdv_freq_shift(rx_fdm_fcorr, rx_fdm, -fdmdv->foff, &fdmdv->foff_rect, 
&fdmdv->foff_phase_rect, *nin);
+
+    /* baseband processing */
+
+    fdm_downconvert(rx_baseband, fdmdv->Nc, rx_fdm_fcorr, fdmdv->phase_rx, 
fdmdv->freq, *nin);
+    rx_filter(rx_filt, fdmdv->Nc, rx_baseband, fdmdv->rx_filter_memory, *nin);
+    fdmdv->rx_timing = rx_est_timing(rx_symbols, fdmdv->Nc, rx_filt, 
rx_baseband, fdmdv->rx_filter_mem_timing, env, fdmdv->rx_baseband_mem_timing, 
*nin);
+
+    /* Adjust number of input samples to keep timing within bounds */
+
+    *nin = M;
+
+    if (fdmdv->rx_timing > 2*M/P)
+       *nin += M/P;
+
+    if (fdmdv->rx_timing < 0)
+       *nin -= M/P;
+
+    foff_fine = qpsk_to_bits(rx_bits, &sync_bit, fdmdv->Nc, 
fdmdv->phase_difference, fdmdv->prev_rx_symbols, rx_symbols,
+                             fdmdv->old_qpsk_mapping);
+    memcpy(fdmdv->prev_rx_symbols, rx_symbols, sizeof(COMP)*(fdmdv->Nc+1));
+    snr_update(fdmdv->sig_est, fdmdv->noise_est, fdmdv->Nc, 
fdmdv->phase_difference);
+
+    /* freq offset estimation state machine */
+
+    fdmdv->sync = freq_state(reliable_sync_bit, sync_bit, &fdmdv->fest_state, 
&fdmdv->timer, fdmdv->sync_mem);
+    fdmdv->foff  -= TRACK_COEFF*foff_fine;
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: calc_snr()
+  AUTHOR......: David Rowe
+  DATE CREATED: 17 May 2012
+
+  Calculate current SNR estimate (3000Hz noise BW)
+
+\*---------------------------------------------------------------------------*/
+
+float calc_snr(int Nc, float sig_est[], float noise_est[])
+{
+    float S, SdB;
+    float mean, N50, N50dB, N3000dB;
+    float snr_dB;
+    int   c;
+
+    S = 0.0;
+    for(c=0; c<Nc+1; c++)
+       S += pow(sig_est[c], 2.0);
+    SdB = 10.0*log10(S+1E-12);
+
+    /* Average noise mag across all carriers and square to get an
+       average noise power.  This is an estimate of the noise power in
+       Rs = 50Hz of BW (note for raised root cosine filters Rs is the
+       noise BW of the filter) */
+
+    mean = 0.0;
+    for(c=0; c<Nc+1; c++)
+       mean += noise_est[c];
+    mean /= (Nc+1);
+    N50 = pow(mean, 2.0);
+    N50dB = 10.0*log10(N50+1E-12);
+
+    /* Now multiply by (3000 Hz)/(50 Hz) to find the total noise power
+       in 3000 Hz */
+
+    N3000dB = N50dB + 10.0*log10(3000.0/RS);
+
+    snr_dB = SdB - N3000dB;
+
+    return snr_dB;
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: fdmdv_get_demod_stats()
+  AUTHOR......: David Rowe
+  DATE CREATED: 1 May 2012
+
+  Fills stats structure with a bunch of demod information.
+
+\*---------------------------------------------------------------------------*/
+
+void CODEC2_WIN32SUPPORT fdmdv_get_demod_stats(struct FDMDV *fdmdv,
+                                              struct FDMDV_STATS *fdmdv_stats)
+{
+    int   c;
+
+    fdmdv_stats->Nc = fdmdv->Nc;
+    fdmdv_stats->snr_est = calc_snr(fdmdv->Nc, fdmdv->sig_est, 
fdmdv->noise_est);
+    fdmdv_stats->sync = fdmdv->sync;
+    fdmdv_stats->foff = fdmdv->foff;
+    fdmdv_stats->rx_timing = fdmdv->rx_timing;
+    fdmdv_stats->clock_offset = 0.0; /* TODO - implement clock offset 
estimation */
+
+    for(c=0; c<fdmdv->Nc+1; c++) {
+       fdmdv_stats->rx_symbols[c] = fdmdv->phase_difference[c];
+    }
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: fdmdv_8_to_48()
+  AUTHOR......: David Rowe
+  DATE CREATED: 9 May 2012
+
+  Changes the sample rate of a signal from 8 to 48 kHz.  Experience
+  with PC based modems has shown that PC sound cards have a more
+  accurate sample clock when set for 48 kHz than 8 kHz.
+
+  n is the number of samples at the 8 kHz rate, there are FDMDV_OS*n samples
+  at the 48 kHz rate.  A memory of FDMDV_OS_TAPS/FDMDV_OS samples is reqd for
+  in8k[] (see t48_8.c unit test as example).
+
+  This is a classic polyphase upsampler.  We take the 8 kHz samples
+  and insert (FDMDV_OS-1) zeroes between each sample, then
+  FDMDV_OS_TAPS FIR low pass filter the signal at 4kHz.  As most of
+  the input samples are zeroes, we only need to multiply non-zero
+  input samples by filter coefficients.  The zero insertion and
+  filtering are combined in the code below and I'm too lazy to explain
+  it further right now....
+
+\*---------------------------------------------------------------------------*/
+
+void CODEC2_WIN32SUPPORT fdmdv_8_to_48(float out48k[], float in8k[], int n)
+{
+    int i,j,k,l;
+
+    /* make sure n is an integer multiple of the oversampling rate, ow
+       this function breaks */
+
+    assert((n % FDMDV_OS) == 0);
+
+    for(i=0; i<n; i++) {
+       for(j=0; j<FDMDV_OS; j++) {
+           out48k[i*FDMDV_OS+j] = 0.0;
+           for(k=0,l=0; k<FDMDV_OS_TAPS; k+=FDMDV_OS,l++)
+               out48k[i*FDMDV_OS+j] += fdmdv_os_filter[k+j]*in8k[i-l];
+           out48k[i*FDMDV_OS+j] *= FDMDV_OS;
+
+       }
+    }
+
+    /* update filter memory */
+
+    for(i=-(FDMDV_OS_TAPS/FDMDV_OS); i<0; i++)
+       in8k[i] = in8k[i + n];
+
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: fdmdv_48_to_8()
+  AUTHOR......: David Rowe
+  DATE CREATED: 9 May 2012
+
+  Changes the sample rate of a signal from 48 to 8 kHz.
+
+  n is the number of samples at the 8 kHz rate, there are FDMDV_OS*n
+  samples at the 48 kHz rate.  As above however a memory of
+  FDMDV_OS_TAPS samples is reqd for in48k[] (see t48_8.c unit test as example).
+
+  Low pass filter the 48 kHz signal at 4 kHz using the same filter as
+  the upsampler, then just output every FDMDV_OS-th filtered sample.
+
+\*---------------------------------------------------------------------------*/
+
+void CODEC2_WIN32SUPPORT fdmdv_48_to_8(float out8k[], float in48k[], int n)
+{
+    int i,j;
+
+    for(i=0; i<n; i++) {
+       out8k[i] = 0.0;
+       for(j=0; j<FDMDV_OS_TAPS; j++)
+           out8k[i] += fdmdv_os_filter[j]*in48k[i*FDMDV_OS-j];
+    }
+
+    /* update filter memory */
+
+    for(i=-FDMDV_OS_TAPS; i<0; i++)
+       in48k[i] = in48k[i + n*FDMDV_OS];
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: fdmdv_get_rx_spectrum()
+  AUTHOR......: David Rowe
+  DATE CREATED: 9 June 2012
+
+  Returns the FDMDV_NSPEC point magnitude spectrum of the rx signal in
+  dB. The spectral samples are scaled so that 0dB is the peak, a good
+  range for plotting is 0 to -40dB.
+
+  Note only the real part of the complex input signal is used at
+  present.  A complex variable is used for input for compatability
+  with the other rx signal procesing.
+
+  Successive calls can be used to build up a waterfall or spectrogram
+  plot, by mapping the received levels to colours.
+
+  The time-frequency resolution of the spectrum can be adjusted by varying
+  FDMDV_NSPEC.  Note that a 2*FDMDV_NSPEC size FFT is reqd to get
+  FDMDV_NSPEC output points. FDMDV_NSPEC must be a power of 2.
+
+  See octave/tget_spec.m for a demo real time spectral display using
+  Octave. This demo averages the output over time to get a smoother
+  display:
+
+     av = 0.9*av + 0.1*mag_dB
+
+\*---------------------------------------------------------------------------*/
+
+void CODEC2_WIN32SUPPORT fdmdv_get_rx_spectrum(struct FDMDV *f, float 
mag_spec_dB[],
+                                              COMP rx_fdm[], int nin)
+{
+    int   i,j;
+    COMP  fft_in[2*FDMDV_NSPEC];
+    COMP  fft_out[2*FDMDV_NSPEC];
+    float full_scale_dB;
+
+    /* update buffer of input samples */
+
+    for(i=0; i<2*FDMDV_NSPEC-nin; i++)
+       f->fft_buf[i] = f->fft_buf[i+nin];
+    for(j=0; j<nin; j++,i++)
+       f->fft_buf[i] = rx_fdm[j].real;
+    assert(i == 2*FDMDV_NSPEC);
+
+    /* window and FFT */
+
+    for(i=0; i<2*FDMDV_NSPEC; i++) {
+       fft_in[i].real = f->fft_buf[i] * (0.5 - 
0.5*cos((float)i*2.0*PI/(2*FDMDV_NSPEC)));
+       fft_in[i].imag = 0.0;
+    }
+
+    kiss_fft(f->fft_cfg, (kiss_fft_cpx *)fft_in, (kiss_fft_cpx *)fft_out);
+
+    /* FFT scales up a signal of level 1 FDMDV_NSPEC */
+
+    full_scale_dB = 20*log10(FDMDV_NSPEC);
+
+    /* scale and convert to dB */
+
+    for(i=0; i<FDMDV_NSPEC; i++) {
+       mag_spec_dB[i]  = 10.0*log10(fft_out[i].real*fft_out[i].real + 
fft_out[i].imag*fft_out[i].imag + 1E-12);
+       mag_spec_dB[i] -= full_scale_dB;
+    }
+}
+
+/*---------------------------------------------------------------------------*\
+
+  Function used during development to test if magnitude of digital
+  oscillators was drifting.  It was!
+
+\*---------------------------------------------------------------------------*/
+
+void CODEC2_WIN32SUPPORT fdmdv_dump_osc_mags(struct FDMDV *f)
+{
+    int   i;
+
+    fprintf(stderr, "phase_tx[]:\n");
+    for(i=0; i<=f->Nc; i++)
+       fprintf(stderr,"  %1.3f", cabsolute(f->phase_tx[i]));
+    fprintf(stderr,"\nfreq[]:\n");
+    for(i=0; i<=f->Nc; i++)
+       fprintf(stderr,"  %1.3f", cabsolute(f->freq[i]));
+    fprintf(stderr,"\nfoff_rect %1.3f  foff_phase_rect: %1.3f", 
cabsolute(f->foff_rect), cabsolute(f->foff_phase_rect));
+    fprintf(stderr,"\nphase_rx[]:\n");
+    for(i=0; i<=f->Nc; i++)
+       fprintf(stderr,"  %1.3f", cabsolute(f->phase_rx[i]));
+    fprintf(stderr, "\n\n");
+}
diff --git a/gr-vocoder/lib/codec2/fdmdv_internal.h 
b/gr-vocoder/lib/codec2/fdmdv_internal.h
new file mode 100644
index 0000000..24080e6
--- /dev/null
+++ b/gr-vocoder/lib/codec2/fdmdv_internal.h
@@ -0,0 +1,176 @@
+/*---------------------------------------------------------------------------*\
+
+  FILE........: fdmdv_internal.h
+  AUTHOR......: David Rowe
+  DATE CREATED: April 16 2012
+
+  Header file for FDMDV internal functions, exposed via this header
+  file for testing.
+
+\*---------------------------------------------------------------------------*/
+
+/*
+  Copyright (C) 2012 David Rowe
+
+  All rights reserved.
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU Lesser General Public License version 2.1, as
+  published by the Free Software Foundation.  This program is
+  distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or
+  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+  License for more details.
+
+  You should have received a copy of the GNU Lesser General Public License
+  along with this program; if not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef __FDMDV_INTERNAL__
+#define __FDMDV_INTERNAL__
+
+#include "comp.h"
+#include "codec2_fdmdv.h"
+#include "kiss_fft.h"
+
+/*---------------------------------------------------------------------------*\
+
+                               DEFINES
+
+\*---------------------------------------------------------------------------*/
+
+#define PI             3.141592654
+#define FS                    8000  /* sample rate in Hz                       
                             */
+#define T                 (1.0/FS)  /* sample period in seconds                
                             */
+#define RS                      50  /* symbol rate in Hz                       
                             */
+#define NC                      20  /* max number of data carriers (plus one 
pilot in the centre)           */
+#define NB                       2  /* Bits/symbol for QPSK modulation         
                             */
+#define RB              (NC*RS*NB)  /* bit rate                                
                             */
+#define M                  (FS/RS)  /* oversampling factor                     
                             */
+#define NSYM                     6  /* number of symbols to filter over        
                             */
+#define NFILTER            (NSYM*M) /* size of tx/rx filters at sample rate M  
                             */
+
+#define FSEP                    75  /* Default separation between carriers 
(Hz)                             */
+
+#define NT                       5  /* number of symbols we estimate timing 
over                            */
+#define P                        4  /* oversample factor used for initial rx 
symbol filtering               */
+#define NFILTERTIMING (M+NFILTER+M) /* filter memory used for resampling after 
timing estimation            */
+
+#define NPILOT_LUT                 (4*M)    /* number of pilot look up table 
samples                 */
+#define NPILOTCOEFF                   30    /* number of FIR filter coeffs in 
LP filter              */
+#define NPILOTBASEBAND (NPILOTCOEFF+M+M/P)  /* number of pilot baseband 
samples reqd for pilot LPF   */
+#define NPILOTLPF                  (4*M)    /* number of samples we DFT pilot 
over, pilot est window */
+#define MPILOTFFT                    256
+
+#define NSYNC_MEM                6
+
+/* averaging filter coeffs */
+
+#define TRACK_COEFF              0.5
+#define SNR_COEFF                0.9       /* SNR est averaging filter coeff */
+
+/*---------------------------------------------------------------------------*\
+
+                               STRUCT for States
+
+\*---------------------------------------------------------------------------*/
+
+struct FDMDV {
+
+    int   Nc;
+    float fsep;
+
+    /* test data (test frame) states */
+
+    int  ntest_bits;
+    int  current_test_bit;
+    int *rx_test_bits_mem;
+
+    /* Modulator */
+
+    int  old_qpsk_mapping;
+    int  tx_pilot_bit;
+    COMP prev_tx_symbols[NC+1];
+    COMP tx_filter_memory[NC+1][NSYM];
+    COMP phase_tx[NC+1];
+    COMP freq[NC+1];
+
+    /* Pilot generation at demodulator */
+
+    COMP pilot_lut[NPILOT_LUT];
+    int  pilot_lut_index;
+    int  prev_pilot_lut_index;
+
+    /* freq offset estimation states */
+
+    kiss_fft_cfg fft_pilot_cfg;
+    COMP pilot_baseband1[NPILOTBASEBAND];
+    COMP pilot_baseband2[NPILOTBASEBAND];
+    COMP pilot_lpf1[NPILOTLPF];
+    COMP pilot_lpf2[NPILOTLPF];
+    COMP S1[MPILOTFFT];
+    COMP S2[MPILOTFFT];
+
+    /* freq offset correction states */
+
+    float foff;
+    COMP foff_rect;
+    COMP foff_phase_rect;
+
+    /* Demodulator */
+
+    COMP  phase_rx[NC+1];
+    COMP  rx_filter_memory[NC+1][NFILTER];
+    COMP  rx_filter_mem_timing[NC+1][NT*P];
+    COMP  rx_baseband_mem_timing[NC+1][NFILTERTIMING];
+    float rx_timing;
+    COMP  phase_difference[NC+1];
+    COMP  prev_rx_symbols[NC+1];
+
+    /* sync state machine */
+
+    int  sync_mem[NSYNC_MEM];
+    int  fest_state;
+    int  sync;
+    int  timer;
+
+    /* SNR estimation states */
+
+    float sig_est[NC+1];
+    float noise_est[NC+1];
+
+    /* Buf for FFT/waterfall */
+
+    float fft_buf[2*FDMDV_NSPEC];
+    kiss_fft_cfg fft_cfg;
+ };
+
+/*---------------------------------------------------------------------------*\
+
+                              FUNCTION PROTOTYPES
+
+\*---------------------------------------------------------------------------*/
+
+void bits_to_dqpsk_symbols(COMP tx_symbols[], int Nc, COMP prev_tx_symbols[], 
int tx_bits[], int *pilot_bit, int old_qpsk_mapping);
+void tx_filter(COMP tx_baseband[NC+1][M], int Nc, COMP tx_symbols[], COMP 
tx_filter_memory[NC+1][NSYM]);
+void fdm_upconvert(COMP tx_fdm[], int Nc, COMP tx_baseband[NC+1][M], COMP 
phase_tx[], COMP freq_tx[]);
+void generate_pilot_fdm(COMP *pilot_fdm, int *bit, float *symbol, float 
*filter_mem, COMP *phase, COMP *freq);
+void generate_pilot_lut(COMP pilot_lut[], COMP *pilot_freq);
+float rx_est_freq_offset(struct FDMDV *f, COMP rx_fdm[], int nin);
+void lpf_peak_pick(float *foff, float *max, COMP pilot_baseband[], COMP 
pilot_lpf[], kiss_fft_cfg fft_pilot_cfg, COMP S[], int nin);
+void freq_shift(COMP rx_fdm_fcorr[], COMP rx_fdm[], float foff, COMP 
*foff_rect, COMP *foff_phase_rect, int nin);
+void fdm_downconvert(COMP rx_baseband[NC+1][M+M/P], int Nc, COMP rx_fdm[], 
COMP phase_rx[], COMP freq[], int nin);
+void rx_filter(COMP rx_filt[NC+1][P+1], int Nc, COMP rx_baseband[NC+1][M+M/P], 
COMP rx_filter_memory[NC+1][NFILTER], int nin);
+float rx_est_timing(COMP  rx_symbols[], int Nc,
+                  COMP  rx_filt[NC+1][P+1],
+                  COMP  rx_baseband[NC+1][M+M/P],
+                  COMP  rx_filter_mem_timing[NC+1][NT*P],
+                  float env[],
+                  COMP  rx_baseband_mem_timing[NC+1][NFILTERTIMING],
+                  int   nin);
+float qpsk_to_bits(int rx_bits[], int *sync_bit, int Nc, COMP 
phase_difference[], COMP prev_rx_symbols[], COMP rx_symbols[], int 
old_qpsk_mapping);
+void snr_update(float sig_est[], float noise_est[], int Nc, COMP 
phase_difference[]);
+int freq_state(int *reliable_sync_bit, int sync_bit, int *state, int *timer, 
int *sync_mem);
+float calc_snr(int Nc, float sig_est[], float noise_est[]);
+
+#endif
diff --git a/gr-vocoder/lib/codec2/fft.c b/gr-vocoder/lib/codec2/fft.c
deleted file mode 100644
index 19f3141..0000000
--- a/gr-vocoder/lib/codec2/fft.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*---------------------------------------------------------------------------*\
-
-  FILE........: fft.c
-  AUTHOR......: Bruce Robertson
-  DATE CREATED: 20/11/2010
-
-  Bridging function to the kiss_fft package.
-
-\*---------------------------------------------------------------------------*/
-
-/*
-  Copyright (C) 2010 Bruce Robertson
-
-  All rights reserved.
-
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU Lesser General Public License version 2.1, as
-  published by the Free Software Foundation.  This program is
-  distributed in the hope that it will be useful, but WITHOUT ANY
-  WARRANTY; without even the implied warranty of MERCHANTABILITY or
-  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
-  License for more details.
-
-  You should have received a copy of the GNU Lesser General Public License
-  along with this program; if not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <assert.h>
-#include "kiss_fft.h"
-
-/*---------------------------------------------------------------------------*\
-
-                                GLOBALS
-
-\*---------------------------------------------------------------------------*/
-
-kiss_fft_cpx *fin;
-kiss_fft_cpx *fout;
-kiss_fft_cfg cfg_forward;
-kiss_fft_cfg cfg_reverse;
-
-/*---------------------------------------------------------------------------*\
-
-  initialize_fft(int n)
-
-  Initialisation function for kiss_fft. This assumes that all calls to fft()
-  use the same datatypes and are one arrays of the same size.
-
-\*---------------------------------------------------------------------------*/
-
-void
-initialize_fft (int n)
-{
-  fin = KISS_FFT_MALLOC (n * sizeof (kiss_fft_cpx));
-  assert(fin != NULL);
-  fout = KISS_FFT_MALLOC (n * sizeof (kiss_fft_cpx));
-  assert(fout != NULL);
-  cfg_forward = kiss_fft_alloc (n, 0, NULL, NULL);
-  assert(cfg_forward != NULL);
-  cfg_reverse = kiss_fft_alloc (n, 1, NULL, NULL);
-  assert(cfg_reverse != NULL);
-}
-
-/*---------------------------------------------------------------------------*\
-
-  fft(float x[], int n, int isign)
-  Function that calls kiss_fft with the signature of four1 from NRC.
-
-\*---------------------------------------------------------------------------*/
-
-
-void
-fft (float x[], int n, int isign)
-{
-  //int isReverse = 0; // never used
-  int c;
-  kiss_fft_cfg cfg;
-  if (cfg_forward == NULL)
-    {
-      initialize_fft (n);
-    }
-  for (c = 0; c < n * 2; c += 2)
-    {
-      fin[c / 2].r = x[c];
-      fin[c / 2].i = -x[c + 1];
-    }
-  if (isign == -1)
-    {
-      cfg = cfg_reverse;
-    }
-  else
-    {
-      cfg = cfg_forward;
-    }
-  kiss_fft (cfg, fin, fout);
-  for (c = 0; c < n * 2; c += 2)
-    {
-      x[c] = fout[(c) / 2].r;
-      x[c + 1] = -fout[(c) / 2].i;
-    }
-}
diff --git a/gr-vocoder/lib/codec2/fft.h b/gr-vocoder/lib/codec2/fft.h
deleted file mode 100644
index d5f8304..0000000
--- a/gr-vocoder/lib/codec2/fft.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/*---------------------------------------------------------------------------*\
-
-  FILE........: fft.h
-  AUTHOR......: Bruce Robertson
-  DATE CREATED: 29/11/2010
-
-  Bridge between existing code and kiss_fft.
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef __FFT__
-#define __FFT__
-void fft(float x[], int n, int isign);
-
-#endif /* __FFT__ */
-
diff --git a/gr-vocoder/lib/codec2/fifo.c b/gr-vocoder/lib/codec2/fifo.c
new file mode 100644
index 0000000..acac261
--- /dev/null
+++ b/gr-vocoder/lib/codec2/fifo.c
@@ -0,0 +1,142 @@
+/*---------------------------------------------------------------------------*\
+
+  FILE........: fifo.c
+  AUTHOR......: David Rowe
+  DATE CREATED: Oct 15 2012
+
+  A FIFO design useful in gluing the FDMDV modem and codec together in
+  integrated applications.  The unittest/tfifo indicates these
+  routines are thread safe without the need for syncronisation
+  object, e.g. a different thread can read and write to a fifo at the
+  same time.
+
+\*---------------------------------------------------------------------------*/
+
+/*
+  Copyright (C) 2012 David Rowe
+
+  All rights reserved.
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU Lesser General Public License version 2.1, as
+  published by the Free Software Foundation.  This program is
+  distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or
+  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+  License for more details.
+
+  You should have received a copy of the GNU Lesser General Public License
+  along with this program; if not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <assert.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "codec2_fifo.h"
+
+struct FIFO {
+    short *buf;
+    short *pin;
+    short *pout;
+    int    nshort;
+};
+
+struct FIFO *fifo_create(int nshort) {
+    struct FIFO *fifo;
+
+    fifo = (struct FIFO *)malloc(sizeof(struct FIFO));
+    assert(fifo != NULL);
+
+    fifo->buf = (short*)malloc(sizeof(short)*nshort);
+    assert(fifo->buf != NULL);
+    fifo->pin = fifo->buf;
+    fifo->pout = fifo->buf;
+    fifo->nshort = nshort;
+
+    return fifo;
+}
+
+void fifo_destroy(struct FIFO *fifo) {
+    assert(fifo != NULL);
+    free(fifo->buf);
+    free(fifo);
+}
+
+int fifo_write(struct FIFO *fifo, short data[], int n) {
+    int            i;
+    int            fifo_free;
+    short         *pdata;
+    short         *pin = fifo->pin;
+
+    assert(fifo != NULL);
+    assert(data != NULL);
+
+    // available storage is one less than nshort as prd == pwr
+    // is reserved for empty rather than full
+
+    fifo_free = fifo->nshort - fifo_used(fifo) - 1;
+
+    if (n > fifo_free) {
+       return -1;
+    }
+    else {
+
+       /* This could be made more efficient with block copies
+          using memcpy */
+
+       pdata = data;
+       for(i=0; i<n; i++) {
+           *pin++ = *pdata++;
+           if (pin == (fifo->buf + fifo->nshort))
+               pin = fifo->buf;
+       }
+       fifo->pin = pin;
+    }
+
+    return 0;
+}
+
+int fifo_read(struct FIFO *fifo, short data[], int n)
+{
+    int            i;
+    short         *pdata;
+    short         *pout = fifo->pout;
+
+    assert(fifo != NULL);
+    assert(data != NULL);
+
+    if (n > fifo_used(fifo)) {
+       return -1;
+    }
+    else {
+
+       /* This could be made more efficient with block copies
+          using memcpy */
+
+       pdata = data;
+       for(i=0; i<n; i++) {
+           *pdata++ = *pout++;
+           if (pout == (fifo->buf + fifo->nshort))
+               pout = fifo->buf;
+       }
+       fifo->pout = pout;
+    }
+
+    return 0;
+}
+
+int fifo_used(struct FIFO *fifo)
+{
+    short         *pin = fifo->pin;
+    short         *pout = fifo->pout;
+    unsigned int   used;
+
+    assert(fifo != NULL);
+    if (pin >= pout)
+        used = pin - pout;
+    else
+        used = fifo->nshort + (unsigned int)(pin - pout);
+
+    return used;
+}
+
diff --git a/gr-vocoder/lib/codec2/fq20.sh b/gr-vocoder/lib/codec2/fq20.sh
deleted file mode 100755
index 9ccf739..0000000
--- a/gr-vocoder/lib/codec2/fq20.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-# fq20.shsh
-# David Rowe 27 July 2010
-#
-# Decode a file with fully quantised codec at 20ms frame rate
-
-../src/sinedec ../raw/$1.raw $1.mdl -o $1_phase0_lsp_20_EWo2.raw --phase 0 
--lpc 10 --lsp --postfilter --dec
-
diff --git a/gr-vocoder/lib/codec2/hanning.h b/gr-vocoder/lib/codec2/hanning.h
new file mode 100644
index 0000000..81d88dc
--- /dev/null
+++ b/gr-vocoder/lib/codec2/hanning.h
@@ -0,0 +1,644 @@
+/* Generated by hanning_file() Octave function */
+
+const float hanning[]={
+  0,
+  2.4171e-05,
+  9.66816e-05,
+  0.000217525,
+  0.000386689,
+  0.000604158,
+  0.00086991,
+  0.00118392,
+  0.00154616,
+  0.00195659,
+  0.00241517,
+  0.00292186,
+  0.00347661,
+  0.00407937,
+  0.00473008,
+  0.00542867,
+  0.00617507,
+  0.00696922,
+  0.00781104,
+  0.00870045,
+  0.00963736,
+  0.0106217,
+  0.0116533,
+  0.0127322,
+  0.0138581,
+  0.0150311,
+  0.0162509,
+  0.0175175,
+  0.0188308,
+  0.0201906,
+  0.0215968,
+  0.0230492,
+  0.0245478,
+  0.0260923,
+  0.0276826,
+  0.0293186,
+  0.0310001,
+  0.032727,
+  0.034499,
+  0.036316,
+  0.0381779,
+  0.0400844,
+  0.0420354,
+  0.0440307,
+  0.04607,
+  0.0481533,
+  0.0502802,
+  0.0524506,
+  0.0546643,
+  0.056921,
+  0.0592206,
+  0.0615627,
+  0.0639473,
+  0.0663741,
+  0.0688427,
+  0.0713531,
+  0.0739048,
+  0.0764978,
+  0.0791318,
+  0.0818064,
+  0.0845214,
+  0.0872767,
+  0.0900718,
+  0.0929066,
+  0.0957807,
+  0.0986939,
+  0.101646,
+  0.104636,
+  0.107665,
+  0.110732,
+  0.113836,
+  0.116978,
+  0.120156,
+  0.123372,
+  0.126624,
+  0.129912,
+  0.133235,
+  0.136594,
+  0.139989,
+  0.143418,
+  0.146881,
+  0.150379,
+  0.153911,
+  0.157476,
+  0.161074,
+  0.164705,
+  0.168368,
+  0.172063,
+  0.17579,
+  0.179549,
+  0.183338,
+  0.187158,
+  0.191008,
+  0.194888,
+  0.198798,
+  0.202737,
+  0.206704,
+  0.2107,
+  0.214724,
+  0.218775,
+  0.222854,
+  0.226959,
+  0.231091,
+  0.235249,
+  0.239432,
+  0.243641,
+  0.247874,
+  0.252132,
+  0.256414,
+  0.260719,
+  0.265047,
+  0.269398,
+  0.273772,
+  0.278167,
+  0.282584,
+  0.287021,
+  0.29148,
+  0.295958,
+  0.300456,
+  0.304974,
+  0.30951,
+  0.314065,
+  0.318638,
+  0.323228,
+  0.327835,
+  0.332459,
+  0.3371,
+  0.341756,
+  0.346427,
+  0.351113,
+  0.355814,
+  0.360528,
+  0.365256,
+  0.369997,
+  0.374751,
+  0.379516,
+  0.384293,
+  0.389082,
+  0.393881,
+  0.398691,
+  0.40351,
+  0.408338,
+  0.413176,
+  0.418022,
+  0.422876,
+  0.427737,
+  0.432605,
+  0.43748,
+  0.44236,
+  0.447247,
+  0.452138,
+  0.457034,
+  0.461935,
+  0.466839,
+  0.471746,
+  0.476655,
+  0.481568,
+  0.486481,
+  0.491397,
+  0.496313,
+  0.501229,
+  0.506145,
+  0.511061,
+  0.515976,
+  0.520889,
+  0.5258,
+  0.530708,
+  0.535614,
+  0.540516,
+  0.545414,
+  0.550308,
+  0.555197,
+  0.560081,
+  0.564958,
+  0.56983,
+  0.574695,
+  0.579552,
+  0.584402,
+  0.589244,
+  0.594077,
+  0.598901,
+  0.603715,
+  0.60852,
+  0.613314,
+  0.618097,
+  0.622868,
+  0.627628,
+  0.632375,
+  0.63711,
+  0.641831,
+  0.646538,
+  0.651232,
+  0.655911,
+  0.660574,
+  0.665222,
+  0.669855,
+  0.67447,
+  0.679069,
+  0.683651,
+  0.688215,
+  0.69276,
+  0.697287,
+  0.701795,
+  0.706284,
+  0.710752,
+  0.7152,
+  0.719627,
+  0.724033,
+  0.728418,
+  0.73278,
+  0.73712,
+  0.741437,
+  0.74573,
+  0.75,
+  0.754246,
+  0.758467,
+  0.762663,
+  0.766833,
+  0.770978,
+  0.775097,
+  0.779189,
+  0.783254,
+  0.787291,
+  0.791301,
+  0.795283,
+  0.799236,
+  0.80316,
+  0.807055,
+  0.810921,
+  0.814756,
+  0.81856,
+  0.822334,
+  0.826077,
+  0.829788,
+  0.833468,
+  0.837115,
+  0.840729,
+  0.844311,
+  0.847859,
+  0.851374,
+  0.854855,
+  0.858301,
+  0.861713,
+  0.86509,
+  0.868431,
+  0.871737,
+  0.875007,
+  0.87824,
+  0.881437,
+  0.884598,
+  0.887721,
+  0.890806,
+  0.893854,
+  0.896864,
+  0.899835,
+  0.902768,
+  0.905661,
+  0.908516,
+  0.911331,
+  0.914106,
+  0.916841,
+  0.919536,
+  0.92219,
+  0.924804,
+  0.927376,
+  0.929907,
+  0.932397,
+  0.934845,
+  0.93725,
+  0.939614,
+  0.941935,
+  0.944213,
+  0.946448,
+  0.94864,
+  0.950789,
+  0.952894,
+  0.954955,
+  0.956972,
+  0.958946,
+  0.960874,
+  0.962759,
+  0.964598,
+  0.966393,
+  0.968142,
+  0.969846,
+  0.971505,
+  0.973118,
+  0.974686,
+  0.976207,
+  0.977683,
+  0.979112,
+  0.980495,
+  0.981832,
+  0.983122,
+  0.984365,
+  0.985561,
+  0.986711,
+  0.987813,
+  0.988868,
+  0.989876,
+  0.990837,
+  0.99175,
+  0.992616,
+  0.993434,
+  0.994204,
+  0.994927,
+  0.995601,
+  0.996228,
+  0.996807,
+  0.997337,
+  0.99782,
+  0.998255,
+  0.998641,
+  0.998979,
+  0.999269,
+  0.999511,
+  0.999704,
+  0.999849,
+  0.999946,
+  0.999994,
+  0.999994,
+  0.999946,
+  0.999849,
+  0.999704,
+  0.999511,
+  0.999269,
+  0.998979,
+  0.998641,
+  0.998255,
+  0.99782,
+  0.997337,
+  0.996807,
+  0.996228,
+  0.995601,
+  0.994927,
+  0.994204,
+  0.993434,
+  0.992616,
+  0.99175,
+  0.990837,
+  0.989876,
+  0.988868,
+  0.987813,
+  0.986711,
+  0.985561,
+  0.984365,
+  0.983122,
+  0.981832,
+  0.980495,
+  0.979112,
+  0.977683,
+  0.976207,
+  0.974686,
+  0.973118,
+  0.971505,
+  0.969846,
+  0.968142,
+  0.966393,
+  0.964598,
+  0.962759,
+  0.960874,
+  0.958946,
+  0.956972,
+  0.954955,
+  0.952894,
+  0.950789,
+  0.94864,
+  0.946448,
+  0.944213,
+  0.941935,
+  0.939614,
+  0.93725,
+  0.934845,
+  0.932397,
+  0.929907,
+  0.927376,
+  0.924804,
+  0.92219,
+  0.919536,
+  0.916841,
+  0.914106,
+  0.911331,
+  0.908516,
+  0.905661,
+  0.902768,
+  0.899835,
+  0.896864,
+  0.893854,
+  0.890806,
+  0.887721,
+  0.884598,
+  0.881437,
+  0.87824,
+  0.875007,
+  0.871737,
+  0.868431,
+  0.86509,
+  0.861713,
+  0.858301,
+  0.854855,
+  0.851374,
+  0.847859,
+  0.844311,
+  0.840729,
+  0.837115,
+  0.833468,
+  0.829788,
+  0.826077,
+  0.822334,
+  0.81856,
+  0.814756,
+  0.810921,
+  0.807055,
+  0.80316,
+  0.799236,
+  0.795283,
+  0.791301,
+  0.787291,
+  0.783254,
+  0.779189,
+  0.775097,
+  0.770978,
+  0.766833,
+  0.762663,
+  0.758467,
+  0.754246,
+  0.75,
+  0.74573,
+  0.741437,
+  0.73712,
+  0.73278,
+  0.728418,
+  0.724033,
+  0.719627,
+  0.7152,
+  0.710752,
+  0.706284,
+  0.701795,
+  0.697287,
+  0.69276,
+  0.688215,
+  0.683651,
+  0.679069,
+  0.67447,
+  0.669855,
+  0.665222,
+  0.660574,
+  0.655911,
+  0.651232,
+  0.646538,
+  0.641831,
+  0.63711,
+  0.632375,
+  0.627628,
+  0.622868,
+  0.618097,
+  0.613314,
+  0.60852,
+  0.603715,
+  0.598901,
+  0.594077,
+  0.589244,
+  0.584402,
+  0.579552,
+  0.574695,
+  0.56983,
+  0.564958,
+  0.560081,
+  0.555197,
+  0.550308,
+  0.545414,
+  0.540516,
+  0.535614,
+  0.530708,
+  0.5258,
+  0.520889,
+  0.515976,
+  0.511061,
+  0.506145,
+  0.501229,
+  0.496313,
+  0.491397,
+  0.486481,
+  0.481568,
+  0.476655,
+  0.471746,
+  0.466839,
+  0.461935,
+  0.457034,
+  0.452138,
+  0.447247,
+  0.44236,
+  0.43748,
+  0.432605,
+  0.427737,
+  0.422876,
+  0.418022,
+  0.413176,
+  0.408338,
+  0.40351,
+  0.398691,
+  0.393881,
+  0.389082,
+  0.384293,
+  0.379516,
+  0.374751,
+  0.369997,
+  0.365256,
+  0.360528,
+  0.355814,
+  0.351113,
+  0.346427,
+  0.341756,
+  0.3371,
+  0.332459,
+  0.327835,
+  0.323228,
+  0.318638,
+  0.314065,
+  0.30951,
+  0.304974,
+  0.300456,
+  0.295958,
+  0.29148,
+  0.287021,
+  0.282584,
+  0.278167,
+  0.273772,
+  0.269398,
+  0.265047,
+  0.260719,
+  0.256414,
+  0.252132,
+  0.247874,
+  0.243641,
+  0.239432,
+  0.235249,
+  0.231091,
+  0.226959,
+  0.222854,
+  0.218775,
+  0.214724,
+  0.2107,
+  0.206704,
+  0.202737,
+  0.198798,
+  0.194888,
+  0.191008,
+  0.187158,
+  0.183338,
+  0.179549,
+  0.17579,
+  0.172063,
+  0.168368,
+  0.164705,
+  0.161074,
+  0.157476,
+  0.153911,
+  0.150379,
+  0.146881,
+  0.143418,
+  0.139989,
+  0.136594,
+  0.133235,
+  0.129912,
+  0.126624,
+  0.123372,
+  0.120156,
+  0.116978,
+  0.113836,
+  0.110732,
+  0.107665,
+  0.104636,
+  0.101646,
+  0.0986939,
+  0.0957807,
+  0.0929066,
+  0.0900718,
+  0.0872767,
+  0.0845214,
+  0.0818064,
+  0.0791318,
+  0.0764978,
+  0.0739048,
+  0.0713531,
+  0.0688427,
+  0.0663741,
+  0.0639473,
+  0.0615627,
+  0.0592206,
+  0.056921,
+  0.0546643,
+  0.0524506,
+  0.0502802,
+  0.0481533,
+  0.04607,
+  0.0440307,
+  0.0420354,
+  0.0400844,
+  0.0381779,
+  0.036316,
+  0.034499,
+  0.032727,
+  0.0310001,
+  0.0293186,
+  0.0276826,
+  0.0260923,
+  0.0245478,
+  0.0230492,
+  0.0215968,
+  0.0201906,
+  0.0188308,
+  0.0175175,
+  0.0162509,
+  0.0150311,
+  0.0138581,
+  0.0127322,
+  0.0116533,
+  0.0106217,
+  0.00963736,
+  0.00870045,
+  0.00781104,
+  0.00696922,
+  0.00617507,
+  0.00542867,
+  0.00473008,
+  0.00407937,
+  0.00347661,
+  0.00292186,
+  0.00241517,
+  0.00195659,
+  0.00154616,
+  0.00118392,
+  0.00086991,
+  0.000604158,
+  0.000386689,
+  0.000217525,
+  9.66816e-05,
+  2.4171e-05,
+  0
+};
diff --git a/gr-vocoder/lib/codec2/interp.c b/gr-vocoder/lib/codec2/interp.c
index fad4554..be89fc3 100644
--- a/gr-vocoder/lib/codec2/interp.c
+++ b/gr-vocoder/lib/codec2/interp.c
@@ -29,13 +29,11 @@
 #include <math.h>
 #include <string.h>
 #include <stdio.h>
-#include <stdlib.h>
 
 #include "defines.h"
 #include "interp.h"
 #include "lsp.h"
 #include "quantise.h"
-#include "dump.h"
 
 float sample_log_amp(MODEL *model, float w);
 
@@ -113,23 +111,19 @@ float sample_log_amp(MODEL *model, float w)
 
     assert(w > 0.0); assert (w <= PI);
 
-    m = 0;
-    while ((m+1)*model->Wo < w) m++;
-    f = (w - m*model->Wo)/model->Wo;
+    m = floorf(w/model->Wo + 0.5);
+    f = (w - m*model->Wo)/w;
     assert(f <= 1.0);
 
     if (m < 1) {
-       log_amp = f*log10(model->A[1] + 1E-6);
+       log_amp = f*log10f(model->A[1] + 1E-6);
     }
     else if ((m+1) > model->L) {
-       log_amp = (1.0-f)*log10(model->A[model->L] + 1E-6);
+       log_amp = (1.0-f)*log10f(model->A[model->L] + 1E-6);
     }
     else {
-       log_amp = (1.0-f)*log10(model->A[m] + 1E-6) +
-                  f*log10(model->A[m+1] + 1E-6);
-       //printf("m=%d A[m] %f A[m+1] %f x %f %f %f\n", m, model->A[m],
-       //       model->A[m+1], pow(10.0, log_amp),
-       //       (1-f), f);
+       log_amp = (1.0-f)*log10f(model->A[m] + 1E-6) +
+                  f*log10f(model->A[m+1] + 1E-6);
     }
 
     return log_amp;
@@ -137,338 +131,193 @@ float sample_log_amp(MODEL *model, float w)
 
 /*---------------------------------------------------------------------------*\
 
-  FUNCTION....: sample_log_amp_quad()
+  FUNCTION....: interp_lsp()
   AUTHOR......: David Rowe
-  DATE CREATED: 9 March 2011
-
-  Samples the amplitude envelope at an arbitrary frequency w.  Uses
-  quadratic interpolation in the log domain to sample between harmonic
-  amplitudes.
-
-  y(x) = ax*x + bx + c
+  DATE CREATED: 10 Nov 2010
 
-  We assume three points are x=-1, x=0, x=1, which we map to m-1,m,m+1
+  Given two frames decribed by model parameters 20ms apart, determines
+  the model parameters of the 10ms frame between them.  Assumes
+  voicing is available for middle (interpolated) frame.  Outputs are
+  amplitudes and Wo for the interpolated frame.
 
-  c = y(0)
-  b = (y(1) - y(-1))/2
-  a = y(-1) + b - y(0)
+  This version uses interpolation of LSPs, seems to do a better job
+  with bg noise.
 
 \*---------------------------------------------------------------------------*/
 
-float sample_log_amp_quad(MODEL *model, float w)
+void interpolate_lsp(
+  kiss_fft_cfg  fft_fwd_cfg,
+  MODEL *interp,    /* interpolated model params                     */
+  MODEL *prev,      /* previous frames model params                  */
+  MODEL *next,      /* next frames model params                      */
+  float *prev_lsps, /* previous frames LSPs                          */
+  float  prev_e,    /* previous frames LPC energy                    */
+  float *next_lsps, /* next frames LSPs                              */
+  float  next_e,    /* next frames LPC energy                        */
+  float *ak_interp, /* interpolated aks for this frame               */
+  float *lsps_interp/* interpolated lsps for this frame              */
+)
 {
-    int   m;
-    float a,b,c,x, log_amp;
+    int   i;
+    float e;
+    float snr;
 
-    assert(w > 0.0); assert (w <= PI);
+    /* trap corner case where V est is probably wrong */
 
-    m = floor(w/model->Wo + 0.5);
-    if (m < 2) m = 2;
-    if (m > (model->L-1)) m = model->L-1;
-    c = log10(model->A[m]+1E-6);
-    b = (log10(model->A[m+1]+1E-6) - log10(model->A[m-1]+1E-6))/2.0;
-    a = log10(model->A[m-1]+1E-6) + b - c;
-    x = (w - m*model->Wo)/model->Wo;
-
-    log_amp = a*x*x + b*x + c;
-    //printf("m=%d A[m-1] %f A[m] %f A[m+1] %f w %f x %f log_amp %f\n", m,
-    //    model->A[m-1],
-    //    model->A[m], model->A[m+1], w, x, pow(10.0, log_amp));
-    return log_amp;
-}
+    if (interp->voiced && !prev->voiced && !next->voiced) {
+       interp->voiced = 0;
+    }
 
-/*---------------------------------------------------------------------------*\
+    /* Wo depends on voicing of this and adjacent frames */
 
-  FUNCTION....: sample_log_amp_quad_nl()
-  AUTHOR......: David Rowe
-  DATE CREATED: 10 March 2011
+    if (interp->voiced) {
+       if (prev->voiced && next->voiced)
+           interp->Wo = (prev->Wo + next->Wo)/2.0;
+       if (!prev->voiced && next->voiced)
+           interp->Wo = next->Wo;
+       if (prev->voiced && !next->voiced)
+           interp->Wo = prev->Wo;
+    }
+    else {
+       interp->Wo = TWO_PI/P_MAX;
+    }
+    interp->L = PI/interp->Wo;
 
-  Samples the amplitude envelope at an arbitrary frequency w.  Uses
-  quadratic interpolation in the log domain to sample between harmonic
-  amplitudes.  This version can handle non-linear steps along a freq
-  axis defined by arbitrary steps.
+    //printf("  interp: prev_v: %d next_v: %d prev_Wo: %f next_Wo: %f\n",
+    //    prev->voiced, next->voiced, prev->Wo, next->Wo);
+    //printf("  interp: Wo: %1.5f  L: %d\n", interp->Wo, interp->L);
 
-  y(x) = ax*x + bx + c
+    /* interpolate LSPs */
 
-  We assume three points are (x_1,y_1), (0,y0) and (x1,y1).
+    for(i=0; i<LPC_ORD; i++) {
+       lsps_interp[i] = (prev_lsps[i] + next_lsps[i])/2.0;
+    }
 
-\*---------------------------------------------------------------------------*/
+    /* Interpolate LPC energy in log domain */
 
-float sample_log_amp_quad_nl(
-                            float w[],     /* frequency points            */
-                            float A[],     /* for these amplitude samples */
-                            int np,        /* number of frequency points  */
-                            float w_sample /* frequency of new samples    */
-)
-{
-    int   m,i;
-    float a,b,c,x, log_amp, best_dist;
-    float x_1, x1;
-    float y_1, y0, y1;
-
-    //printf("w_sample  %f\n", w_sample);
-    assert(w_sample >= 0.0); assert (w_sample <= 1.1*PI);
-
-    /* find closest point to centre quadratic interpolator */
-
-    best_dist = 1E32;
-    m = 0;
-    for (i=0; i<np; i++)
-       if (fabs(w[i] - w_sample) < best_dist) {
-           best_dist = fabs(w[i] - w_sample);
-           m = i;
-       }
-
-    /* stay one point away from edge of array */
-
-    if (m < 1) m = 1;
-    if (m > (np-2)) m = np - 2;
-
-    /* find polynomial coeffs */
-
-    x_1 = w[m-1]- w[m]; x1 = w[m+1] - w[m];
-    y_1 = log10(A[m-1]+1E-6);
-    y0  = log10(A[m]+1E-6);
-    y1  = log10(A[m+1]+1E-6);
-
-    c = y0;
-    a = (y_1*x1 - y1*x_1 + c*x_1 - c*x1)/(x_1*x_1*x1 - x1*x1*x_1);
-    b = (y1 -a*x1*x1 - c)/x1;
-    x = w_sample - w[m];
-
-    //printf("%f   %f  %f\n", w[0], w[1], w[2]);
-    //printf("%f %f  %f %f  %f %f\n", x_1, y_1, 0.0, y0, x1, y1);
-    log_amp = a*x*x + b*x + c;
-    //printf("a %f  b %f  c %f\n", a, b, c);
-    //printf("m=%d A[m-1] %f A[m] %f A[m+1] %f w_sample %f w[m] %f x %f 
log_amp %f\n", m,
-    //    A[m-1],
-    //    A[m], A[m+1], w_sample, w[m], x, log_amp);
-    //exit(0);
-    return log_amp;
-}
+    e = powf(10.0, (log10f(prev_e) + log10f(next_e))/2.0);
+    //printf("  interp: e: %f\n", e);
 
-#define M_MAX 40
+    /* convert back to amplitudes */
+
+    lsp_to_lpc(lsps_interp, ak_interp, LPC_ORD);
+    aks_to_M2(fft_fwd_cfg, ak_interp, LPC_ORD, interp, e, &snr, 0, 0, 1, 1, 
LPCPF_BETA, LPCPF_GAMMA);
+    //printf("  interp: ak[1]: %f A[1] %f\n", ak_interp[1], interp->A[1]);
+}
 
-float fres[] = {100,   200,  300,  400,  500,  600,  700,  800,  900, 1000,
-               1200, 1400, 1600, 1850, 2100, 2350, 2600, 2900, 3400, 3800};
 
 /*---------------------------------------------------------------------------*\
 
-  FUNCTION....: resample_amp_nl()
+  FUNCTION....: interp_Wo()
   AUTHOR......: David Rowe
-  DATE CREATED: 7 March 2011
+  DATE CREATED: 22 May 2012
 
-  Converts the current model with L {Am} samples spaced Wo apart to
-  RES_POINTS samples spaced Wo/RES_POINTS apart.  Then subtracts
-  from the previous frames samples to get the delta.
+  Interpolates centre 10ms sample of Wo and L samples given two
+  samples 20ms apart. Assumes voicing is available for centre
+  (interpolated) frame.
 
 \*---------------------------------------------------------------------------*/
 
-void resample_amp_fixed(MODEL *model,
-                       float w[], float A[],
-                       float wres[], float Ares[],
-                       float AresdB_prev[],
-                       float AresdB[],
-                       float deltat[])
+void interp_Wo(
+  MODEL *interp,    /* interpolated model params                     */
+  MODEL *prev,      /* previous frames model params                  */
+  MODEL *next       /* next frames model params                      */
+              )
 {
-    int   i;
-
-    for(i=1; i<=model->L; i++) {
-       w[i-1] = i*model->Wo;
-       A[i-1] = model->A[i];
-    }
-
-    for(i=0; i<RES_POINTS; i++) {
-       wres[i] = fres[i]*PI/4000.0;
-    }
-
-    for(i=0; i<RES_POINTS; i++) {
-       Ares[i] = pow(10.0,sample_log_amp_quad_nl(w, A, model->L, wres[i]));
-    }
-
-    /* work out delta T vector for this frame */
-
-    for(i=0; i<RES_POINTS; i++) {
-       AresdB[i] = 20.0*log10(Ares[i]);
-       deltat[i] = AresdB[i] - AresdB_prev[i];
-    }
-
+    interp_Wo2(interp, prev, next, 0.5);
 }
 
 /*---------------------------------------------------------------------------*\
 
-  FUNCTION....: resample_amp_nl()
+  FUNCTION....: interp_Wo2()
   AUTHOR......: David Rowe
-  DATE CREATED: 7 March 2011
-
-  Converts the current model with L {Am} samples spaced Wo apart to M
-  samples spaced Wo/M apart.  Then converts back to L {Am} samples.
-  used to prototype constant rate Amplitude encoding ideas.
+  DATE CREATED: 22 May 2012
 
-  Returns the SNR in dB.
+  Weighted interpolation of two Wo samples.
 
 \*---------------------------------------------------------------------------*/
 
-float resample_amp_nl(MODEL *model, int m, float AresdB_prev[])
+void interp_Wo2(
+  MODEL *interp,    /* interpolated model params                     */
+  MODEL *prev,      /* previous frames model params                  */
+  MODEL *next,      /* next frames model params                      */
+  float  weight
+)
 {
-    int   i;
-    float w[MAX_AMP], A[MAX_AMP];
-    float wres[MAX_AMP], Ares[MAX_AMP], AresdB[MAX_AMP];
-    float signal, noise, snr;
-    float new_A;
-    float deltat[MAX_AMP], deltat_q[MAX_AMP], AresdB_q[MAX_AMP];
-
-    resample_amp_fixed(model, w, A, wres, Ares, AresdB_prev, AresdB, deltat);
-
-    /* quantise delta T vector */
-
-    for(i=0; i<RES_POINTS; i++) {
-       noise = 3.0*(1.0 - 2.0*rand()/RAND_MAX);
-       //noise = 0.0;
-       deltat_q[i] = deltat[i] + noise;
-    }
+    /* trap corner case where voicing est is probably wrong */
 
-    /* recover Ares vector */
-
-    for(i=0; i<RES_POINTS; i++) {
-       AresdB_q[i] = AresdB_prev[i] + deltat_q[i];
-       Ares[i] = pow(10.0, AresdB_q[i]/20.0);
-       //printf("%d %f %f\n", i, AresdB[i], AresdB_q[i]);
+    if (interp->voiced && !prev->voiced && !next->voiced) {
+       interp->voiced = 0;
     }
 
-    /* update memory based on version at decoder */
+    /* Wo depends on voicing of this and adjacent frames */
 
-    for(i=0; i<RES_POINTS; i++) {
-       AresdB_prev[i] = AresdB_q[i];
+    if (interp->voiced) {
+       if (prev->voiced && next->voiced)
+           interp->Wo = (1.0 - weight)*prev->Wo + weight*next->Wo;
+       if (!prev->voiced && next->voiced)
+           interp->Wo = next->Wo;
+       if (prev->voiced && !next->voiced)
+           interp->Wo = prev->Wo;
     }
-
-#ifdef DUMP
-    dump_resample(wres,Ares,M_MAX);
-#endif
-
-    signal = noise = 0.0;
-
-    for(i=1; i<model->L; i++) {
-       new_A = pow(10.0,sample_log_amp_quad_nl(wres, Ares, RES_POINTS, 
model->Wo*i));
-       signal += pow(model->A[i], 2.0);
-       noise  += pow(model->A[i] - new_A, 2.0);
-       //printf("%f %f\n", model->A[i], new_A);
-       model->A[i] = new_A;
+    else {
+       interp->Wo = TWO_PI/P_MAX;
     }
-
-    snr = 10.0*log10(signal/noise);
-    printf("snr = %3.2f\n", snr);
-    //exit(0);
-    return snr;
+    interp->L = PI/interp->Wo;
 }
 
+
 /*---------------------------------------------------------------------------*\
 
-  FUNCTION....: resample_amp()
+  FUNCTION....: interp_energy()
   AUTHOR......: David Rowe
-  DATE CREATED: 10 March 2011
-
-  Converts the current model with L {Am} samples spaced Wo apart to M
-  samples with a non-linear spacing.  Then converts back to L {Am}
-  samples.  used to prototype constant rate Amplitude encoding ideas.
+  DATE CREATED: 22 May 2012
 
-  Returns the SNR in dB.
+  Interpolates centre 10ms sample of energy given two samples 20ms
+  apart.
 
 \*---------------------------------------------------------------------------*/
 
-float resample_amp(MODEL *model, int m)
+float interp_energy(float prev_e, float next_e)
 {
-    int   i;
-    MODEL model_m;
-    float new_A, signal, noise, snr, log_amp_dB;
-    float n_db = 0.0;
-
-    model_m.Wo = PI/(float)m;
-    model_m.L = PI/model_m.Wo;
-
-    for(i=1; i<=model_m.L; i++) {
-       log_amp_dB    = 20.0*sample_log_amp_quad(model, i*model_m.Wo);
-       log_amp_dB   += n_db*(1.0 - 2.0*rand()/RAND_MAX);
-       model_m.A[i]  = pow(10,log_amp_dB/20.0);
-    }
-
-    //dump_resample(&model_m);
-
-    signal = noise = 0.0;
+    return powf(10.0, (log10f(prev_e) + log10f(next_e))/2.0);
 
-    for(i=1; i<model->L/4; i++) {
-       new_A = pow(10,sample_log_amp_quad(&model_m, i*model->Wo));
-       signal += pow(model->A[i], 2.0);
-       noise  += pow(model->A[i] - new_A, 2.0);
-       //printf("%f %f\n", model->A[i], new_A);
-       model->A[i] = new_A;
-    }
-
-    snr = 10.0*log10(signal/noise);
-    //printf("snr = %3.2f\n", snr);
-    //exit(0);
-    return snr;
 }
 
+
 /*---------------------------------------------------------------------------*\
 
-  FUNCTION....: interp_lsp()
+  FUNCTION....: interp_energy2()
   AUTHOR......: David Rowe
-  DATE CREATED: 10 Nov 2010
-
-  Given two frames decribed by model parameters 20ms apart, determines
-  the model parameters of the 10ms frame between them.  Assumes
-  voicing is available for middle (interpolated) frame.  Outputs are
-  amplitudes and Wo for the interpolated frame.
+  DATE CREATED: 22 May 2012
 
-  This version uses interpolation of LSPs, seems to do a better job
-  with bg noise.
+  Interpolates centre 10ms sample of energy given two samples 20ms
+  apart.
 
 \*---------------------------------------------------------------------------*/
 
-void interpolate_lsp(
-  MODEL *interp,    /* interpolated model params                     */
-  MODEL *prev,      /* previous frames model params                  */
-  MODEL *next,      /* next frames model params                      */
-  float *prev_lsps, /* previous frames LSPs                          */
-  float  prev_e,    /* previous frames LPC energy                    */
-  float *next_lsps, /* next frames LSPs                              */
-  float  next_e,    /* next frames LPC energy                        */
-  float *ak_interp  /* interpolated aks for this frame                */
-                    )
+float interp_energy2(float prev_e, float next_e, float weight)
 {
-    //int   l,i;
-    int   i;
-    float lsps[LPC_ORD],e;
-    float snr;
+    return powf(10.0, (1.0 - weight)*log10f(prev_e) + weight*log10f(next_e));
 
-    /* Wo depends on voicing of this and adjacent frames */
+}
 
-    if (interp->voiced) {
-       if (prev->voiced && next->voiced)
-           interp->Wo = (prev->Wo + next->Wo)/2.0;
-       if (!prev->voiced && next->voiced)
-           interp->Wo = next->Wo;
-       if (prev->voiced && !next->voiced)
-           interp->Wo = prev->Wo;
-    }
-    else {
-       interp->Wo = TWO_PI/P_MAX;
-    }
-    interp->L = PI/interp->Wo;
 
-    /* interpolate LSPs */
+/*---------------------------------------------------------------------------*\
 
-    for(i=0; i<LPC_ORD; i++) {
-       lsps[i] = (prev_lsps[i] + next_lsps[i])/2.0;
-    }
+  FUNCTION....: interpolate_lsp_ver2()
+  AUTHOR......: David Rowe
+  DATE CREATED: 22 May 2012
 
-    /* Interpolate LPC energy in log domain */
+  Weighted interpolation of LSPs.
 
-    e = pow(10.0, (log10(prev_e) + log10(next_e))/2.0);
+\*---------------------------------------------------------------------------*/
 
-    /* convert back to amplitudes */
+void interpolate_lsp_ver2(float interp[], float prev[],  float next[], float 
weight)
+{
+    int i;
 
-    lsp_to_lpc(lsps, ak_interp, LPC_ORD);
-    aks_to_M2(ak_interp, LPC_ORD, interp, e, &snr, 0);
+    for(i=0; i<LPC_ORD; i++)
+       interp[i] = (1.0 - weight)*prev[i] + weight*next[i];
 }
+
diff --git a/gr-vocoder/lib/codec2/interp.h b/gr-vocoder/lib/codec2/interp.h
index d509726..24cb946 100644
--- a/gr-vocoder/lib/codec2/interp.h
+++ b/gr-vocoder/lib/codec2/interp.h
@@ -28,14 +28,18 @@
 #ifndef __INTERP__
 #define __INTERP__
 
-#define RES_POINTS 20
+#include "kiss_fft.h"
 
 void interpolate(MODEL *interp, MODEL *prev, MODEL *next);
-void interpolate_lsp(MODEL *interp, MODEL *prev, MODEL *next,
+void interpolate_lsp(kiss_fft_cfg  fft_dec_cfg,
+                    MODEL *interp, MODEL *prev, MODEL *next,
                     float *prev_lsps, float  prev_e,
                     float *next_lsps, float  next_e,
-                    float *ak_interp);
-float resample_amp(MODEL *model, int m);
-float resample_amp_nl(MODEL *model, int m, float Ares_prev[]);
+                    float *ak_interp, float *lsps_interp);
+void interp_Wo(MODEL *interp, MODEL *prev, MODEL *next);
+void interp_Wo2(MODEL *interp, MODEL *prev, MODEL *next, float weight);
+float interp_energy(float prev, float next);
+float interp_energy2(float prev, float next, float weight);
+void interpolate_lsp_ver2(float interp[], float prev[],  float next[], float 
weight);
 
 #endif
diff --git a/gr-vocoder/lib/codec2/listensim.sh 
b/gr-vocoder/lib/codec2/listensim.sh
deleted file mode 100755
index 0b27a1b..0000000
--- a/gr-vocoder/lib/codec2/listensim.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-# listensim.sh
-# David Rowe 10 Sep 2009
-#
-# Listen to files processed with sim.sh
-
-../script/menu.sh ../raw/$1.raw $1_uq.raw $1_phase0.raw $1_lpc10.raw 
$1_phase0_lpc10.raw $1_phase0_lpc10_dec.raw $1_phase0_lsp_dec.raw $2 $3
-
-
diff --git a/gr-vocoder/lib/codec2/lpc.c b/gr-vocoder/lib/codec2/lpc.c
index 1784f75..9a730eb 100644
--- a/gr-vocoder/lib/codec2/lpc.c
+++ b/gr-vocoder/lib/codec2/lpc.c
@@ -2,14 +2,14 @@
 
   FILE........: lpc.c
   AUTHOR......: David Rowe
-  DATE CREATED: 30/9/90
+  DATE CREATED: 30 Sep 1990 (!)
 
   Linear Prediction functions written in C.
 
 \*---------------------------------------------------------------------------*/
 
 /*
-  Copyright (C) 2009 David Rowe
+  Copyright (C) 2009-2012 David Rowe
 
   All rights reserved.
 
@@ -28,6 +28,9 @@
 #define LPC_MAX_N 512          /* maximum no. of samples in frame */
 #define PI 3.141592654         /* mathematical constant */
 
+#define ALPHA 1.0
+#define BETA  0.94
+
 #include <assert.h>
 #include <math.h>
 #include "defines.h"
@@ -35,6 +38,60 @@
 
 /*---------------------------------------------------------------------------*\
 
+  pre_emp()
+
+  Pre-emphasise (high pass filter with zero close to 0 Hz) a frame of
+  speech samples.  Helps reduce dynamic range of LPC spectrum, giving
+  greater weight and hensea better match to low energy formants.
+
+  Should be balanced by de-emphasis of the output speech.
+
+\*---------------------------------------------------------------------------*/
+
+void pre_emp(
+  float  Sn_pre[], /* output frame of speech samples                     */
+  float  Sn[],    /* input frame of speech samples                      */
+  float *mem,      /* Sn[-1]single sample memory                         */
+  int   Nsam      /* number of speech samples to use                    */
+)
+{
+    int   i;
+
+    for(i=0; i<Nsam; i++) {
+       Sn_pre[i] = Sn[i] - ALPHA * mem[0];
+       mem[0] = Sn[i];
+    }
+
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+  de_emp()
+
+  De-emphasis filter (low pass filter with polse close to 0 Hz).
+
+\*---------------------------------------------------------------------------*/
+
+void de_emp(
+  float  Sn_de[],  /* output frame of speech samples                     */
+  float  Sn[],    /* input frame of speech samples                      */
+  float *mem,      /* Sn[-1]single sample memory                         */
+  int    Nsam     /* number of speech samples to use                    */
+)
+{
+    int   i;
+
+    for(i=0; i<Nsam; i++) {
+       Sn_de[i] = Sn[i] + BETA * mem[0];
+       mem[0] = Sn_de[i];
+    }
+
+}
+
+
+/*---------------------------------------------------------------------------*\
+
   hanning_window()
 
   Hanning windows a frame of speech samples.
@@ -50,7 +107,7 @@ void hanning_window(
   int i;       /* loop variable */
 
   for(i=0; i<Nsam; i++)
-    Wn[i] = Sn[i]*(0.5 - 0.5*cos(2*PI*(float)i/(Nsam-1)));
+    Wn[i] = Sn[i]*(0.5 - 0.5*cosf(2*PI*(float)i/(Nsam-1)));
 }
 
 /*---------------------------------------------------------------------------*\
@@ -80,33 +137,6 @@ void autocorrelate(
 
 /*---------------------------------------------------------------------------*\
 
-  autocorrelate_freq()
-
-  Finds the first P autocorrelation values from an array of frequency domain
-  power samples.
-
-\*---------------------------------------------------------------------------*/
-
-void autocorrelate_freq(
-  float Pw[],  /* Nsam frequency domain power spectrum samples    */
-  float  w[],  /* frequency of each sample in Pw[]                */
-  float  R[],  /* array of order+1 autocorrelation coefficients   */
-  int Nsam,    /* number of windowed samples to use               */
-  int order    /* order of LPC analysis                           */
-)
-{
-  int i,j;     /* loop variables */
-
-  for(j=0; j<order+1; j++) {
-    R[j] = 0.0;
-    for(i=0; i<Nsam; i++)
-       R[j] += Pw[i]*cos(j*w[i]);
-  }
-  R[j] /= Nsam;
-}
-
-/*---------------------------------------------------------------------------*\
-
   levinson_durbin()
 
   Given P+1 autocorrelation coefficients, finds P Linear Prediction Coeff.
@@ -139,7 +169,7 @@ void levinson_durbin(
     for(j=1; j<=i-1; j++)
       sum += a[i-1][j]*R[i-j];
     k[i] = -1.0*(R[i] + sum)/E[i-1];   /* Equation 38b, Makhoul */
-    if (fabs(k[i]) > 1.0)
+    if (fabsf(k[i]) > 1.0)
       k[i] = 0.0;
 
     a[i][i] = k[i];
@@ -274,6 +304,6 @@ void weight(
   int i;
 
   for(i=1; i<=order; i++)
-    akw[i] = ak[i]*pow(gamma,(float)i);
+    akw[i] = ak[i]*powf(gamma,(float)i);
 }
 
diff --git a/gr-vocoder/lib/codec2/lpc.h b/gr-vocoder/lib/codec2/lpc.h
index 9125189..482aa1f 100644
--- a/gr-vocoder/lib/codec2/lpc.h
+++ b/gr-vocoder/lib/codec2/lpc.h
@@ -9,7 +9,7 @@
 \*---------------------------------------------------------------------------*/
 
 /*
-  Copyright (C) 2009 David Rowe
+  Copyright (C) 2009-2012 David Rowe
 
   All rights reserved.
 
@@ -30,9 +30,10 @@
 
 #define LPC_MAX_ORDER 20
 
+void pre_emp(float Sn_pre[], float Sn[], float *mem, int Nsam);
+void de_emp(float Sn_se[], float Sn[], float *mem, int Nsam);
 void hanning_window(float Sn[],        float Wn[], int Nsam);
 void autocorrelate(float Sn[], float Rn[], int Nsam, int order);
-void autocorrelate_freq(float Pw[], float w[], float  R[], int Nsam, int 
order);
 void levinson_durbin(float R[],        float lpcs[], int order);
 void inverse_filter(float Sn[], float a[], int Nsam, float res[], int order);
 void synthesis_filter(float res[], float a[], int Nsam,        int order, 
float Sn_[]);
diff --git a/gr-vocoder/lib/codec2/lsp.c b/gr-vocoder/lib/codec2/lsp.c
index b57507b..3f34444 100644
--- a/gr-vocoder/lib/codec2/lsp.c
+++ b/gr-vocoder/lib/codec2/lsp.c
@@ -212,7 +212,7 @@ int lpc_to_lsp (float *a, int lpcrdr, float *freq, int nb, 
float delta)
            interval between xl and xr and repeat till root is located
            within the specified limits  */
 
-           if((psumr*psuml)<0.0){
+           if(((psumr*psuml)<0.0) || (psumr == 0.0)){
                roots++;
 
                psumm=psuml;
diff --git a/gr-vocoder/lib/codec2/machdep.h b/gr-vocoder/lib/codec2/machdep.h
new file mode 100644
index 0000000..ef2e649
--- /dev/null
+++ b/gr-vocoder/lib/codec2/machdep.h
@@ -0,0 +1,51 @@
+/*---------------------------------------------------------------------------*\
+
+  FILE........: machdep.h
+  AUTHOR......: David Rowe
+  DATE CREATED: May 2 2013
+
+  Machine dependant functions.
+
+\*---------------------------------------------------------------------------*/
+
+/*
+  Copyright (C) 2013 David Rowe
+
+  All rights reserved.
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU Lesser General Public License version 2.1, as
+  published by the Free Software Foundation.  This program is
+  distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or
+  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+  License for more details.
+
+  You should have received a copy of the GNU Lesser General Public License
+  along with this program; if not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef __MACHDEP__
+#define __MACHDEP__
+
+#ifdef TIMER
+#define TIMER_VAR(...) unsigned int __VA_ARGS__
+#define TIMER_SAMPLE(timestamp) timestamp = machdep_timer_sample()
+#define TIMER_SAMPLE_AND_LOG(timestamp, prev_timestamp, label) \
+    timestamp = machdep_timer_sample_and_log(prev_timestamp, label)
+#define TIMER_SAMPLE_AND_LOG2(prev_timestamp, label) \
+    machdep_timer_sample_and_log(prev_timestamp, label)
+#else
+#define TIMER_VAR(...)
+#define TIMER_SAMPLE(timestamp)
+#define TIMER_SAMPLE_AND_LOG(timestamp, prev_timestamp, label)
+#define TIMER_SAMPLE_AND_LOG2(prev_timestamp, label)
+#endif
+
+void         machdep_timer_init(void);
+void         machdep_timer_reset(void);
+unsigned int machdep_timer_sample(void);
+unsigned int machdep_timer_sample_and_log(unsigned int start, char s[]);
+void         machdep_timer_print_logged_samples(void);
+
+#endif
diff --git a/gr-vocoder/lib/codec2/nlp.c b/gr-vocoder/lib/codec2/nlp.c
index 0d5e530..cca835b 100644
--- a/gr-vocoder/lib/codec2/nlp.c
+++ b/gr-vocoder/lib/codec2/nlp.c
@@ -28,7 +28,9 @@
 #include "defines.h"
 #include "nlp.h"
 #include "dump.h"
-#include "fft.h"
+#include "kiss_fft.h"
+#undef TIMER
+#include "machdep.h"
 
 #include <assert.h>
 #include <math.h>
@@ -51,6 +53,8 @@
 #define CNLP        0.3                /* post processor constant              
*/
 #define NLP_NTAP 48            /* Decimation LPF order */
 
+#undef DUMP
+
 /*---------------------------------------------------------------------------*\
 
                                GLOBALS
@@ -111,12 +115,16 @@ const float nlp_fir[] = {
 };
 
 typedef struct {
-    float sq[PMAX_M];       /* squared speech samples */
-    float mem_x,mem_y;       /* memory for notch filter */
-    float mem_fir[NLP_NTAP]; /* decimation FIR filter memory */
+    int           m;
+    float         w[PMAX_M/DEC];     /* DFT window                   */
+    float         sq[PMAX_M];       /* squared speech samples       */
+    float         mem_x,mem_y;       /* memory for notch filter      */
+    float         mem_fir[NLP_NTAP]; /* decimation FIR filter memory */
+    kiss_fft_cfg  fft_cfg;           /* kiss FFT config              */
 } NLP;
 
-float post_process_mbe(COMP Fw[], int pmin, int pmax, float gmax);
+float test_candidate_mbe(COMP Sw[], COMP W[], float f0);
+float post_process_mbe(COMP Fw[], int pmin, int pmax, float gmax, COMP Sw[], 
COMP W[], float *prev_Wo);
 float post_process_sub_multiples(COMP Fw[],
                                 int pmin, int pmax, float gmax, int gmax_bin,
                                 float *prev_Wo);
@@ -129,15 +137,24 @@ float post_process_sub_multiples(COMP Fw[],
 
 \*---------------------------------------------------------------------------*/
 
-void *nlp_create()
+void *nlp_create(
+int    m                       /* analysis window size */
+)
 {
     NLP *nlp;
     int  i;
 
+    assert(m <= PMAX_M);
+
     nlp = (NLP*)malloc(sizeof(NLP));
     if (nlp == NULL)
        return NULL;
 
+    nlp->m = m;
+    for(i=0; i<m/DEC; i++) {
+       nlp->w[i] = 0.5 - 0.5*cosf(2*PI*i/(m/DEC-1));
+    }
+
     for(i=0; i<PMAX_M; i++)
        nlp->sq[i] = 0.0;
     nlp->mem_x = 0.0;
@@ -145,20 +162,27 @@ void *nlp_create()
     for(i=0; i<NLP_NTAP; i++)
        nlp->mem_fir[i] = 0.0;
 
+    nlp->fft_cfg = kiss_fft_alloc (PE_FFT_SIZE, 0, NULL, NULL);
+    assert(nlp->fft_cfg != NULL);
+
     return (void*)nlp;
 }
 
 /*---------------------------------------------------------------------------*\
 
-  nlp_destory()
+  nlp_destroy()
 
-  Initialisation function for NLP pitch estimator.
+  Shut down function for NLP pitch estimator.
 
 \*---------------------------------------------------------------------------*/
 
 void nlp_destroy(void *nlp_state)
 {
+    NLP   *nlp;
     assert(nlp_state != NULL);
+    nlp = (NLP*)nlp_state;
+
+    KISS_FFT_FREE(nlp->fft_cfg);
     free(nlp_state);
 }
 
@@ -196,28 +220,33 @@ float nlp(
   void *nlp_state,
   float  Sn[],                 /* input speech vector */
   int    n,                    /* frames shift (no. new samples in Sn[]) */
-  int    m,                    /* analysis window size */
-  int    pmin,                 /* minimum pitch value */
+  int    pmin,                  /* minimum pitch value */
   int    pmax,                 /* maximum pitch value */
   float *pitch,                        /* estimated pitch period in samples */
   COMP   Sw[],                  /* Freq domain version of Sn[] */
+  COMP   W[],                   /* Freq domain window */
   float *prev_Wo
 )
 {
     NLP   *nlp;
-    float  notch;                  /* current notch filter output */
-    COMP   Fw[PE_FFT_SIZE];        /* DFT of squared signal */
+    float  notch;                  /* current notch filter output    */
+    COMP   fw[PE_FFT_SIZE];        /* DFT of squared signal (input)  */
+    COMP   Fw[PE_FFT_SIZE];        /* DFT of squared signal (output) */
     float  gmax;
     int    gmax_bin;
-    int   i,j;
-    float best_f0;
+    int    m, i,j;
+    float  best_f0;
+    TIMER_VAR(start, tnotch, filter, peakpick, window, fft, magsq, shiftmem);
 
     assert(nlp_state != NULL);
     nlp = (NLP*)nlp_state;
+    m = nlp->m;
+
+    TIMER_SAMPLE(start);
 
     /* Square, notch filter at DC, and LP filter vector */
 
-    for(i=m-n; i<M; i++)           /* square latest speech samples */
+    for(i=m-n; i<m; i++)           /* square latest speech samples */
        nlp->sq[i] = Sn[i]*Sn[i];
 
     for(i=m-n; i<m; i++) {     /* notch filter at DC */
@@ -225,9 +254,18 @@ float nlp(
        notch += COEFF*nlp->mem_y;
        nlp->mem_x = nlp->sq[i];
        nlp->mem_y = notch;
-       nlp->sq[i] = notch;
+       nlp->sq[i] = notch + 1.0;  /* With 0 input vectors to codec,
+                                     kiss_fft() would take a long
+                                     time to execute when running in
+                                     real time.  Problem was traced
+                                     to kiss_fft function call in
+                                     this function. Adding this small
+                                     constant fixed problem.  Not
+                                     exactly sure why. */
     }
 
+    TIMER_SAMPLE_AND_LOG(tnotch, start, "      square and notch");
+
     for(i=m-n; i<m; i++) {     /* FIR filter vector */
 
        for(j=0; j<NLP_NTAP-1; j++)
@@ -239,26 +277,33 @@ float nlp(
            nlp->sq[i] += nlp->mem_fir[j]*nlp_fir[j];
     }
 
+    TIMER_SAMPLE_AND_LOG(filter, tnotch, "      filter");
+
     /* Decimate and DFT */
 
     for(i=0; i<PE_FFT_SIZE; i++) {
-       Fw[i].real = 0.0;
-       Fw[i].imag = 0.0;
+       fw[i].real = 0.0;
+       fw[i].imag = 0.0;
     }
     for(i=0; i<m/DEC; i++) {
-       Fw[i].real = nlp->sq[i*DEC]*(0.5 - 0.5*cos(2*PI*i/(m/DEC-1)));
+       fw[i].real = nlp->sq[i*DEC]*nlp->w[i];
     }
-#ifdef DUMP
+    TIMER_SAMPLE_AND_LOG(window, filter, "      window");
+    #ifdef DUMP
     dump_dec(Fw);
-#endif
-    fft(&Fw[0].real,PE_FFT_SIZE,1);
+    #endif
+
+    kiss_fft(nlp->fft_cfg, (kiss_fft_cpx *)fw, (kiss_fft_cpx *)Fw);
+    TIMER_SAMPLE_AND_LOG(fft, window, "      fft");
+
     for(i=0; i<PE_FFT_SIZE; i++)
        Fw[i].real = Fw[i].real*Fw[i].real + Fw[i].imag*Fw[i].imag;
 
-#ifdef DUMP
+    TIMER_SAMPLE_AND_LOG(magsq, fft, "      mag sq");
+    #ifdef DUMP
     dump_sq(nlp->sq);
     dump_Fw(Fw);
-#endif
+    #endif
 
     /* find global peak */
 
@@ -271,8 +316,16 @@ float nlp(
        }
     }
 
-    best_f0 = post_process_sub_multiples(Fw, pmin, pmax, gmax, gmax_bin,
-                                        prev_Wo);
+    TIMER_SAMPLE_AND_LOG(peakpick, magsq, "      peak pick");
+
+    //#define POST_PROCESS_MBE
+    #ifdef POST_PROCESS_MBE
+    best_f0 = post_process_mbe(Fw, pmin, pmax, gmax, Sw, W, prev_Wo);
+    #else
+    best_f0 = post_process_sub_multiples(Fw, pmin, pmax, gmax, gmax_bin, 
prev_Wo);
+    #endif
+
+    TIMER_SAMPLE_AND_LOG(shiftmem, peakpick,  "      post process");
 
     /* Shift samples in buffer to make room for new samples */
 
@@ -282,6 +335,11 @@ float nlp(
     /* return pitch and F0 estimate */
 
     *pitch = (float)SAMPLE_RATE/best_f0;
+
+    TIMER_SAMPLE_AND_LOG2(shiftmem,  "      shift mem");
+
+    TIMER_SAMPLE_AND_LOG2(start,  "      nlp int");
+
     return(best_f0);
 }
 
@@ -289,7 +347,7 @@ float nlp(
 
   post_process_sub_multiples()
 
-  Given the global maximma of Fw[] we search interger submultiples for
+  Given the global maximma of Fw[] we search integer submultiples for
   local maxima.  If local maxima exist and they are above an
   experimentally derived threshold (OK a magic number I pulled out of
   the air) we choose the submultiple as the F0 estimate.
@@ -314,7 +372,7 @@ float post_process_sub_multiples(COMP Fw[],
     int   mult;
     float thresh, best_f0;
     int   b, bmin, bmax, lmax_bin;
-    float lmax, cmax;
+    float lmax;
     int   prev_f0_bin;
 
     /* post process estimate by searching submultiples */
@@ -342,7 +400,7 @@ float post_process_sub_multiples(COMP Fw[],
 
        lmax = 0;
        lmax_bin = bmin;
-       for (b=bmin; b<=bmax; b++)              /* look for maximum in interval 
*/
+       for (b=bmin; b<=bmax; b++)           /* look for maximum in interval */
            if (Fw[b].real > lmax) {
                lmax = Fw[b].real;
                lmax_bin = b;
@@ -350,7 +408,6 @@ float post_process_sub_multiples(COMP Fw[],
 
        if (lmax > thresh)
            if ((lmax > Fw[lmax_bin-1].real) && (lmax > Fw[lmax_bin+1].real)) {
-               cmax = lmax;
                cmax_bin = lmax_bin;
            }
 
@@ -362,3 +419,171 @@ float post_process_sub_multiples(COMP Fw[],
     return best_f0;
 }
 
+/*---------------------------------------------------------------------------*\
+
+  post_process_mbe()
+
+  Use the MBE pitch estimation algorithm to evaluate pitch candidates.  This
+  works OK but the accuracy at low F0 is affected by NW, the analysis window
+  size used for the DFT of the input speech Sw[].  Also favours high F0 in
+  the presence of background noise which causes periodic artifacts in the
+  synthesised speech.
+
+\*---------------------------------------------------------------------------*/
+
+float post_process_mbe(COMP Fw[], int pmin, int pmax, float gmax, COMP Sw[], 
COMP W[], float *prev_Wo)
+{
+  float candidate_f0;
+  float f0,best_f0;            /* fundamental frequency */
+  float e,e_min;                /* MBE cost function */
+  int   i;
+  #ifdef DUMP
+  float e_hz[F0_MAX];
+  #endif
+  #if !defined(NDEBUG) || defined(DUMP)
+  int   bin;
+  #endif
+  float f0_min, f0_max;
+  float f0_start, f0_end;
+
+  f0_min = (float)SAMPLE_RATE/pmax;
+  f0_max = (float)SAMPLE_RATE/pmin;
+
+  /* Now look for local maxima.  Each local maxima is a candidate
+     that we test using the MBE pitch estimation algotithm */
+
+  #ifdef DUMP
+  for(i=0; i<F0_MAX; i++)
+      e_hz[i] = -1;
+  #endif
+  e_min = 1E32;
+  best_f0 = 50;
+  for(i=PE_FFT_SIZE*DEC/pmax; i<=PE_FFT_SIZE*DEC/pmin; i++) {
+    if ((Fw[i].real > Fw[i-1].real) && (Fw[i].real > Fw[i+1].real)) {
+
+       /* local maxima found, lets test if it's big enough */
+
+       if (Fw[i].real > T*gmax) {
+
+           /* OK, sample MBE cost function over +/- 10Hz range in 2.5Hz steps 
*/
+
+           candidate_f0 = (float)i*SAMPLE_RATE/(PE_FFT_SIZE*DEC);
+           f0_start = candidate_f0-20;
+           f0_end = candidate_f0+20;
+           if (f0_start < f0_min) f0_start = f0_min;
+           if (f0_end > f0_max) f0_end = f0_max;
+
+           for(f0=f0_start; f0<=f0_end; f0+= 2.5) {
+               e = test_candidate_mbe(Sw, W, f0);
+               #if !defined(NDEBUG) || defined(DUMP)
+               bin = floor(f0); assert((bin > 0) && (bin < F0_MAX));
+               #endif
+               #ifdef DUMP
+                e_hz[bin] = e;
+                #endif
+               if (e < e_min) {
+                   e_min = e;
+                   best_f0 = f0;
+               }
+           }
+
+       }
+    }
+  }
+
+  /* finally sample MBE cost function around previous pitch estimate
+     (form of pitch tracking) */
+
+  candidate_f0 = *prev_Wo * SAMPLE_RATE/TWO_PI;
+  f0_start = candidate_f0-20;
+  f0_end = candidate_f0+20;
+  if (f0_start < f0_min) f0_start = f0_min;
+  if (f0_end > f0_max) f0_end = f0_max;
+
+  for(f0=f0_start; f0<=f0_end; f0+= 2.5) {
+      e = test_candidate_mbe(Sw, W, f0);
+      #if !defined(NDEBUG) || defined(DUMP)
+      bin = floor(f0); assert((bin > 0) && (bin < F0_MAX));
+      #endif
+      #ifdef DUMP
+      e_hz[bin] = e;
+      #endif
+      if (e < e_min) {
+         e_min = e;
+         best_f0 = f0;
+      }
+  }
+
+  #ifdef DUMP
+  dump_e(e_hz);
+  #endif
+
+  return best_f0;
+}
+
+/*---------------------------------------------------------------------------*\
+
+  test_candidate_mbe()
+
+  Returns the error of the MBE cost function for the input f0.
+
+  Note: I think a lot of the operations below can be simplified as
+  W[].imag = 0 and has been normalised such that den always equals 1.
+
+\*---------------------------------------------------------------------------*/
+
+float test_candidate_mbe(
+    COMP  Sw[],
+    COMP  W[],
+    float f0
+)
+{
+    COMP  Sw_[FFT_ENC];   /* DFT of all voiced synthesised signal */
+    int   l,al,bl,m;      /* loop variables */
+    COMP  Am;             /* amplitude sample for this band */
+    int   offset;         /* centers Hw[] about current harmonic */
+    float den;            /* denominator of Am expression */
+    float error;          /* accumulated error between originl and synthesised 
*/
+    float Wo;             /* current "test" fundamental freq. */
+    int   L;
+
+    L = floor((SAMPLE_RATE/2.0)/f0);
+    Wo = f0*(2*PI/SAMPLE_RATE);
+
+    error = 0.0;
+
+    /* Just test across the harmonics in the first 1000 Hz (L/4) */
+
+    for(l=1; l<L/4; l++) {
+       Am.real = 0.0;
+       Am.imag = 0.0;
+       den = 0.0;
+       al = ceil((l - 0.5)*Wo*FFT_ENC/TWO_PI);
+       bl = ceil((l + 0.5)*Wo*FFT_ENC/TWO_PI);
+
+       /* Estimate amplitude of harmonic assuming harmonic is totally voiced */
+
+       for(m=al; m<bl; m++) {
+           offset = FFT_ENC/2 + m - l*Wo*FFT_ENC/TWO_PI + 0.5;
+           Am.real += Sw[m].real*W[offset].real + Sw[m].imag*W[offset].imag;
+           Am.imag += Sw[m].imag*W[offset].real - Sw[m].real*W[offset].imag;
+           den += W[offset].real*W[offset].real + 
W[offset].imag*W[offset].imag;
+        }
+
+        Am.real = Am.real/den;
+        Am.imag = Am.imag/den;
+
+        /* Determine error between estimated harmonic and original */
+
+        for(m=al; m<bl; m++) {
+           offset = FFT_ENC/2 + m - l*Wo*FFT_ENC/TWO_PI + 0.5;
+           Sw_[m].real = Am.real*W[offset].real - Am.imag*W[offset].imag;
+           Sw_[m].imag = Am.real*W[offset].imag + Am.imag*W[offset].real;
+           error += (Sw[m].real - Sw_[m].real)*(Sw[m].real - Sw_[m].real);
+           error += (Sw[m].imag - Sw_[m].imag)*(Sw[m].imag - Sw_[m].imag);
+       }
+    }
+
+    return error;
+}
+
diff --git a/gr-vocoder/lib/codec2/nlp.h b/gr-vocoder/lib/codec2/nlp.h
index 5e11f11..6e03236 100644
--- a/gr-vocoder/lib/codec2/nlp.h
+++ b/gr-vocoder/lib/codec2/nlp.h
@@ -30,10 +30,9 @@
 
 #include "comp.h"
 
-void *nlp_create();
+void *nlp_create(int m);
 void nlp_destroy(void *nlp_state);
-float nlp(void *nlp_state, float Sn[], int n, int m, int pmin, int pmax,
-         float *pitch, COMP Sw[], float *prev_Wo);
-float test_candidate_mbe(COMP Sw[], float f0, COMP Sw_[]);
+float nlp(void *nlp_state, float Sn[], int n, int pmin, int pmax,
+         float *pitch, COMP Sw[], COMP W[], float *prev_Wo);
 
 #endif
diff --git a/gr-vocoder/lib/codec2/os.h b/gr-vocoder/lib/codec2/os.h
new file mode 100644
index 0000000..0dae9bf
--- /dev/null
+++ b/gr-vocoder/lib/codec2/os.h
@@ -0,0 +1,53 @@
+/* Generate using fir1(47,1/6) in Octave */
+
+const float fdmdv_os_filter[]= {
+    -3.55606818e-04,
+    -8.98615286e-04,
+    -1.40119781e-03,
+    -1.71713852e-03,
+    -1.56471179e-03,
+    -6.28128960e-04,
+    1.24522223e-03,
+    3.83138676e-03,
+    6.41309478e-03,
+    7.85893186e-03,
+    6.93514929e-03,
+    2.79361991e-03,
+    -4.51051400e-03,
+    -1.36671853e-02,
+    -2.21034939e-02,
+    -2.64084653e-02,
+    -2.31425052e-02,
+    -9.84218694e-03,
+    1.40648474e-02,
+    4.67316298e-02,
+    8.39615986e-02,
+    1.19925275e-01,
+    1.48381174e-01,
+    1.64097819e-01,
+    1.64097819e-01,
+    1.48381174e-01,
+    1.19925275e-01,
+    8.39615986e-02,
+    4.67316298e-02,
+    1.40648474e-02,
+    -9.84218694e-03,
+    -2.31425052e-02,
+    -2.64084653e-02,
+    -2.21034939e-02,
+    -1.36671853e-02,
+    -4.51051400e-03,
+    2.79361991e-03,
+    6.93514929e-03,
+    7.85893186e-03,
+    6.41309478e-03,
+    3.83138676e-03,
+    1.24522223e-03,
+    -6.28128960e-04,
+    -1.56471179e-03,
+    -1.71713852e-03,
+    -1.40119781e-03,
+    -8.98615286e-04,
+    -3.55606818e-04
+};
+
diff --git a/gr-vocoder/lib/codec2/pack.c b/gr-vocoder/lib/codec2/pack.c
index e04c937..3f8f93e 100644
--- a/gr-vocoder/lib/codec2/pack.c
+++ b/gr-vocoder/lib/codec2/pack.c
@@ -1,20 +1,20 @@
 /*
   Copyright (C) 2010 Perens LLC <address@hidden>
 
-  This program is free software: you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation, either version 3 of the License, or
-  (at your option) any later version.
+  All rights reserved.
 
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU Lesser General Public License version 2.1, as
+  published by the Free Software Foundation.  This program is
+  distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or
+  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+  License for more details.
 
-  You should have received a copy of the GNU General Public License
-  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  You should have received a copy of the GNU Lesser General Public License
+  along with this program; if not, see <http://www.gnu.org/licenses/>.
+*/
 
- */
 #include "defines.h"
 #include "quantise.h"
 #include <stdio.h>
diff --git a/gr-vocoder/lib/codec2/phase.c b/gr-vocoder/lib/codec2/phase.c
index 69cc669..a9c1c06 100644
--- a/gr-vocoder/lib/codec2/phase.c
+++ b/gr-vocoder/lib/codec2/phase.c
@@ -27,17 +27,16 @@
 
 #include "defines.h"
 #include "phase.h"
-#include "fft.h"
+#include "kiss_fft.h"
 #include "comp.h"
-#include "glottal.c"
+#include "sine.h"
 
 #include <assert.h>
+#include <ctype.h>
 #include <math.h>
 #include <string.h>
 #include <stdlib.h>
 
-#define GLOTTAL_FFT_SIZE 512
-
 /*---------------------------------------------------------------------------*\
 
   aks_to_H()
@@ -48,6 +47,7 @@
 \*---------------------------------------------------------------------------*/
 
 void aks_to_H(
+              kiss_fft_cfg fft_fwd_cfg,
              MODEL *model,     /* model parameters */
              float  aks[],     /* LPC's */
              float  G,         /* energy term */
@@ -55,7 +55,8 @@ void aks_to_H(
              int    order
 )
 {
-  COMP  Pw[FFT_DEC];   /* power spectrum */
+  COMP  pw[FFT_ENC];   /* power spectrum (input) */
+  COMP  Pw[FFT_ENC];   /* power spectrum (output) */
   int   i,m;           /* loop variables */
   int   am,bm;         /* limits of current band */
   float r;             /* no. rads/bin */
@@ -64,35 +65,35 @@ void aks_to_H(
   int   b;             /* centre bin of harmonic */
   float phi_;          /* phase of LPC spectra */
 
-  r = TWO_PI/(FFT_DEC);
+  r = TWO_PI/(FFT_ENC);
 
   /* Determine DFT of A(exp(jw)) ------------------------------------------*/
 
-  for(i=0; i<FFT_DEC; i++) {
-    Pw[i].real = 0.0;
-    Pw[i].imag = 0.0;
+  for(i=0; i<FFT_ENC; i++) {
+    pw[i].real = 0.0;
+    pw[i].imag = 0.0;
   }
 
   for(i=0; i<=order; i++)
-    Pw[i].real = aks[i];
+    pw[i].real = aks[i];
 
-  fft(&Pw[0].real,FFT_DEC,-1);
+  kiss_fft(fft_fwd_cfg, (kiss_fft_cpx *)pw, (kiss_fft_cpx *)Pw);
 
   /* Sample magnitude and phase at harmonics */
 
   for(m=1; m<=model->L; m++) {
-    am = floor((m - 0.5)*model->Wo/r + 0.5);
-    bm = floor((m + 0.5)*model->Wo/r + 0.5);
-    b = floor(m*model->Wo/r + 0.5);
-
-    Em = 0.0;
-    for(i=am; i<bm; i++)
-      Em += G/(Pw[i].real*Pw[i].real + Pw[i].imag*Pw[i].imag);
-    Am = sqrt(fabs(Em/(bm-am)));
-
-    phi_ = -atan2(Pw[b].imag,Pw[b].real);
-    H[m].real = Am*cos(phi_);
-    H[m].imag = Am*sin(phi_);
+      am = (int)((m - 0.5)*model->Wo/r + 0.5);
+      bm = (int)((m + 0.5)*model->Wo/r + 0.5);
+      b = (int)(m*model->Wo/r + 0.5);
+
+      Em = 0.0;
+      for(i=am; i<bm; i++)
+          Em += G/(Pw[i].real*Pw[i].real + Pw[i].imag*Pw[i].imag);
+      Am = sqrtf(fabsf(Em/(bm-am)));
+
+      phi_ = -atan2f(Pw[b].imag,Pw[b].real);
+      H[m].real = Am*cosf(phi_);
+      H[m].imag = Am*sinf(phi_);
   }
 }
 
@@ -188,6 +189,7 @@ void aks_to_H(
 \*---------------------------------------------------------------------------*/
 
 void phase_synth_zero_order(
+    kiss_fft_cfg fft_fwd_cfg,
     MODEL *model,
     float  aks[],
     float *ex_phase,            /* excitation phase of fundamental */
@@ -196,16 +198,13 @@ void phase_synth_zero_order(
 {
   int   m;
   float new_phi;
-  COMP  Ex[MAX_AMP];           /* excitation samples */
-  COMP  A_[MAX_AMP];           /* synthesised harmonic samples */
-  COMP  H[MAX_AMP];             /* LPC freq domain samples */
+  COMP  Ex[MAX_AMP+1];         /* excitation samples */
+  COMP  A_[MAX_AMP+1];         /* synthesised harmonic samples */
+  COMP  H[MAX_AMP+1];           /* LPC freq domain samples */
   float G;
-  float jitter = 0.0;
-  float r;
-  int   b;
 
   G = 1.0;
-  aks_to_H(model, aks, G, H, order);
+  aks_to_H(fft_fwd_cfg, model, aks, G, H, order);
 
   /*
      Update excitation fundamental phase track, this sets the position
@@ -213,50 +212,42 @@ void phase_synth_zero_order(
      I found that using just this frame's Wo improved quality for UV
      sounds compared to interpolating two frames Wo like this:
 
-     ex_phase[0] += (*prev_Wo+mode->Wo)*N/2;
+     ex_phase[0] += (*prev_Wo+model->Wo)*N/2;
   */
 
   ex_phase[0] += (model->Wo)*N;
-  ex_phase[0] -= TWO_PI*floor(ex_phase[0]/TWO_PI + 0.5);
-  r = TWO_PI/GLOTTAL_FFT_SIZE;
+  ex_phase[0] -= TWO_PI*floorf(ex_phase[0]/TWO_PI + 0.5);
 
   for(m=1; m<=model->L; m++) {
 
-      /* generate excitation */
+    /* generate excitation */
 
       if (model->voiced) {
-         /* I think adding a little jitter helps improve low pitch
-            males like hts1a. This moves the onset of each harmonic
-            over at +/- 0.25 of a sample.
-         */
-         jitter = 0.25*(1.0 - 2.0*rand()/RAND_MAX);
-         b = floor(m*model->Wo/r + 0.5);
-         if (b > ((GLOTTAL_FFT_SIZE/2)-1)) {
-             b = (GLOTTAL_FFT_SIZE/2)-1;
-         }
-         Ex[m].real = cos(ex_phase[0]*m - jitter*model->Wo*m + glottal[b]);
-         Ex[m].imag = sin(ex_phase[0]*m - jitter*model->Wo*m + glottal[b]);
-      }
-      else {
-
-         /* When a few samples were tested I found that LPC filter
-            phase is not needed in the unvoiced case, but no harm in
-            keeping it.
-         */
-         float phi = TWO_PI*(float)rand()/RAND_MAX;
-         Ex[m].real = cos(phi);
-         Ex[m].imag = sin(phi);
-      }
-
-      /* filter using LPC filter */
-
-      A_[m].real = H[m].real*Ex[m].real - H[m].imag*Ex[m].imag;
-      A_[m].imag = H[m].imag*Ex[m].real + H[m].real*Ex[m].imag;
-
-      /* modify sinusoidal phase */
-
-      new_phi = atan2(A_[m].imag, A_[m].real+1E-12);
-      model->phi[m] = new_phi;
+
+       Ex[m].real = cosf(ex_phase[0]*m);
+       Ex[m].imag = sinf(ex_phase[0]*m);
+    }
+    else {
+
+       /* When a few samples were tested I found that LPC filter
+          phase is not needed in the unvoiced case, but no harm in
+          keeping it.
+        */
+       float phi = TWO_PI*(float)codec2_rand()/CODEC2_RAND_MAX;
+        Ex[m].real = cosf(phi);
+       Ex[m].imag = sinf(phi);
+    }
+
+    /* filter using LPC filter */
+
+    A_[m].real = H[m].real*Ex[m].real - H[m].imag*Ex[m].imag;
+    A_[m].imag = H[m].imag*Ex[m].real + H[m].real*Ex[m].imag;
+
+    /* modify sinusoidal phase */
+
+    new_phi = atan2f(A_[m].imag, A_[m].real+1E-12);
+    model->phi[m] = new_phi;
   }
 
 }
+
diff --git a/gr-vocoder/lib/codec2/phase.h b/gr-vocoder/lib/codec2/phase.h
index 4f1a620..2927e91 100644
--- a/gr-vocoder/lib/codec2/phase.h
+++ b/gr-vocoder/lib/codec2/phase.h
@@ -28,7 +28,12 @@
 #ifndef __PHASE__
 #define __PHASE__
 
-void phase_synth_zero_order(MODEL *model, float aks[], float *ex_phase,
+#include "kiss_fft.h"
+
+void phase_synth_zero_order(kiss_fft_cfg fft_dec_cfg,
+                           MODEL *model,
+                           float aks[],
+                            float *ex_phase,
                            int order);
 
 #endif
diff --git a/gr-vocoder/lib/codec2/phaseexp.c b/gr-vocoder/lib/codec2/phaseexp.c
new file mode 100644
index 0000000..61b240d
--- /dev/null
+++ b/gr-vocoder/lib/codec2/phaseexp.c
@@ -0,0 +1,1455 @@
+/*---------------------------------------------------------------------------*\
+
+  FILE........: phaseexp.c
+  AUTHOR......: David Rowe
+  DATE CREATED: June 2012
+
+  Experimental functions for quantising, modelling and synthesising phase.
+
+\*---------------------------------------------------------------------------*/
+
+/*
+  Copyright (C) 2012 David Rowe
+
+  All rights reserved.
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU Lesser General Public License version 2.1, as
+  published by the Free Software Foundation.  This program is
+  distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or
+  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+  License for more details.
+
+  You should have received a copy of the GNU Lesser General Public License
+  along with this program; if not,see <http://www.gnu.org/licenses/>.
+*/
+
+#include "defines.h"
+#include "phase.h"
+#include "kiss_fft.h"
+#include "comp.h"
+
+#include <assert.h>
+#include <ctype.h>
+#include <math.h>
+#include <string.h>
+#include <stdlib.h>
+
+/* Bruce Perens' funcs to load codebook files */
+
+struct codebook {
+    unsigned int        k;
+    unsigned int        log2m;
+    unsigned int        m;
+    COMP                *cb;
+    unsigned int         offset;
+};
+
+static const char format[] =
+"The table format must be:\n"
+"\tTwo integers describing the dimensions of the codebook.\n"
+"\tThen, enough numbers to fill the specified dimensions.\n";
+
+float get_float(FILE * in, const char * name, char * * cursor, char * buffer, 
int size)
+{
+  for ( ; ; ) {
+    char *     s = *cursor;
+    char       c;
+
+    while ( (c = *s) != '\0' && !isdigit(c) && c != '-' && c != '.' )
+      s++;
+
+    /* Comments start with "#" and continue to the end of the line. */
+    if ( c != '\0' && c != '#' ) {
+      char *   end = 0;
+      float    f = 0;
+
+      f = strtod(s, &end);
+
+      if ( end != s )
+        *cursor = end;
+        return f;
+    }
+
+    if ( fgets(buffer, size, in) == NULL ) {
+      fprintf(stderr, "%s: Format error. %s\n", name, format);
+      exit(1);
+    }
+    *cursor = buffer;
+  }
+}
+
+static struct codebook *load(const char * name)
+{
+    FILE               *file;
+    char               line[2048];
+    char               *cursor = line;
+    struct codebook    *b = malloc(sizeof(struct codebook));
+    int                        i;
+    int                        size;
+    float               angle;
+
+    file = fopen(name, "rt");
+    assert(file != NULL);
+
+    *cursor = '\0';
+
+    b->k = (int)get_float(file, name, &cursor, line, sizeof(line));
+    b->m = (int)get_float(file, name ,&cursor, line, sizeof(line));
+    size = b->k * b->m;
+
+    b->cb = (COMP *)malloc(size * sizeof(COMP));
+
+    for ( i = 0; i < size; i++ ) {
+       angle = get_float(file, name, &cursor, line, sizeof(line));
+       b->cb[i].real = cos(angle);
+       b->cb[i].imag = sin(angle);
+    }
+
+    fclose(file);
+
+    return b;
+}
+
+
+/* states for phase experiments */
+
+struct PEXP {
+    float            phi1;
+    float            phi_prev[MAX_AMP];
+    float            Wo_prev;
+    int              frames;
+    float            snr;
+    float            var;
+    int              var_n;
+    struct codebook *vq1,*vq2,*vq3,*vq4,*vq5;
+    float            vq_var;
+    int              vq_var_n;
+    MODEL            prev_model;
+    int              state;
+};
+
+
+/*---------------------------------------------------------------------------* 
\
+
+  phase_experiment_create()
+
+  Inits states for phase quantisation experiments.
+
+\*---------------------------------------------------------------------------*/
+
+struct PEXP * phase_experiment_create() {
+    struct PEXP *pexp;
+    int i;
+
+    pexp = (struct PEXP *)malloc(sizeof(struct PEXP));
+    assert (pexp != NULL);
+
+    pexp->phi1 = 0;
+    for(i=0; i<MAX_AMP; i++)
+       pexp->phi_prev[i] = 0.0;
+    pexp->Wo_prev = 0.0;
+    pexp->frames = 0;
+    pexp->snr = 0.0;
+    pexp->var = 0.0;
+    pexp->var_n = 0;
+
+    /* smoothed 10th order for 1st 1 khz */
+    //pexp->vq1 = load("../unittest/ph1_10_1024.txt");
+    //pexp->vq1->offset = 0;
+
+    /* load experimental phase VQ */
+
+    //pexp->vq1 = load("../unittest/testn1_20_1024.txt");
+    pexp->vq1 = load("../unittest/test.txt");
+    //pexp->vq2 = load("../unittest/testn21_40_1024.txt");
+    pexp->vq2 = load("../unittest/test11_20_1024.txt");
+    pexp->vq3 = load("../unittest/test21_30_1024.txt");
+    pexp->vq4 = load("../unittest/test31_40_1024.txt");
+    pexp->vq5 = load("../unittest/test41_60_1024.txt");
+    pexp->vq1->offset = 0;
+    pexp->vq2->offset = 10;
+    pexp->vq3->offset = 20;
+    pexp->vq4->offset = 30;
+    pexp->vq5->offset = 40;
+
+    pexp->vq_var = 0.0;
+    pexp->vq_var_n = 0;
+
+    pexp->state = 0;
+
+    return pexp;
+}
+
+
+/*---------------------------------------------------------------------------* 
\
+
+  phase_experiment_destroy()
+
+\*---------------------------------------------------------------------------*/
+
+void phase_experiment_destroy(struct PEXP *pexp) {
+    assert(pexp != NULL);
+    if (pexp->snr != 0.0)
+       printf("snr: %4.2f dB\n", pexp->snr/pexp->frames);
+    if (pexp->var != 0.0)
+       printf("var...: %4.3f  std dev...: %4.3f (%d non zero phases)\n",
+              pexp->var/pexp->var_n, sqrt(pexp->var/pexp->var_n), pexp->var_n);
+    if (pexp->vq_var != 0.0)
+       printf("vq var: %4.3f  vq std dev: %4.3f (%d non zero phases)\n",
+              pexp->vq_var/pexp->vq_var_n, sqrt(pexp->vq_var/pexp->vq_var_n), 
pexp->vq_var_n);
+    free(pexp);
+}
+
+
+/*---------------------------------------------------------------------------* 
\
+
+  Various test and experimental functions ................
+
+\*---------------------------------------------------------------------------*/
+
+/* Bubblesort to find highest amplitude harmonics */
+
+struct AMPINDEX {
+    float amp;
+    int   index;
+};
+
+static void bubbleSort(struct AMPINDEX numbers[], int array_size)
+{
+    int i, j;
+    struct AMPINDEX temp;
+
+  for (i = (array_size - 1); i > 0; i--)
+  {
+    for (j = 1; j <= i; j++)
+    {
+       //printf("i %d j %d %f %f \n", i, j, numbers[j-1].amp, numbers[j].amp);
+      if (numbers[j-1].amp < numbers[j].amp)
+      {
+        temp = numbers[j-1];
+        numbers[j-1] = numbers[j];
+        numbers[j] = temp;
+      }
+    }
+  }
+}
+
+
+static void print_pred_error(struct PEXP *pexp, MODEL *model, int start, int 
end, float mag_thresh) {
+    int   i;
+    float mag;
+
+    mag = 0.0;
+    for(i=start; i<=end; i++)
+       mag += model->A[i]*model->A[i];
+    mag = 10*log10(mag/(end-start));
+
+    if (mag > mag_thresh) {
+       for(i=start; i<=end; i++) {
+           float pred = pexp->phi_prev[i] + N*i*(model->Wo + 
pexp->Wo_prev)/2.0;
+           float err = pred - model->phi[i];
+           err = atan2(sin(err),cos(err));
+           printf("%f\n",err);
+       }
+       //printf("\n");
+    }
+
+}
+
+
+static void predict_phases(struct PEXP *pexp, MODEL *model, int start, int 
end) {
+    int i;
+
+    for(i=start; i<=end; i++) {
+       model->phi[i] = pexp->phi_prev[i] + N*i*model->Wo;
+    }
+
+}
+static float refine_Wo(struct PEXP     *pexp,
+                      MODEL           *model,
+                      int              start,
+                      int              end);
+
+/* Fancy state based phase prediction.  Actually works OK on most utterances,
+   but could use some tuning.  Breaks down a bit on mmt1. */
+
+static void predict_phases_state(struct PEXP *pexp, MODEL *model, int start, 
int end) {
+    int i, next_state;
+    float best_Wo, dWo;
+
+    //best_Wo = refine_Wo(pexp, model, start, end);
+    //best_Wo = (model->Wo + pexp->Wo_prev)/2.0;
+    best_Wo = model->Wo;
+
+    dWo = fabs(model->Wo - pexp->Wo_prev)/model->Wo;
+    next_state = pexp->state;
+    switch(pexp->state) {
+    case 0:
+       if (dWo < 0.1) {
+           /* UV -> V transition, so start with phases in lock.  They will
+              drift a bit over voiced track which is kinda what we want, so
+              we don't get clicky speech.
+           */
+           next_state = 1;
+           for(i=start; i<=end; i++)
+               pexp->phi_prev[i] = i*pexp->phi1;
+       }
+
+       break;
+    case 1:
+       if (dWo > 0.1)
+           next_state = 0;
+       break;
+    }
+    pexp->state = next_state;
+
+    if (pexp->state == 0)
+       for(i=start; i<=end; i++) {
+           model->phi[i] = PI*(1.0 - 2.0*rand()/RAND_MAX);
+       }
+    else
+       for(i=start; i<=end; i++) {
+           model->phi[i] = pexp->phi_prev[i] + N*i*best_Wo;
+       }
+    printf("state %d\n", pexp->state);
+}
+
+static void struct_phases(struct PEXP *pexp, MODEL *model, int start, int end) 
{
+    int i;
+
+    for(i=start; i<=end; i++)
+       model->phi[i] = pexp->phi1*i;
+
+}
+
+
+static void predict_phases2(struct PEXP *pexp, MODEL *model, int start, int 
end) {
+    int i;
+    float pred, str, diff;
+
+    for(i=start; i<=end; i++) {
+       pred = pexp->phi_prev[i] + N*i*model->Wo;
+       str = pexp->phi1*i;
+       diff = str - pred;
+       diff = atan2(sin(diff), cos(diff));
+       if (diff > 0)
+           pred += PI/16;
+       else
+           pred -= PI/16;
+       model->phi[i] = pred;
+    }
+
+}
+
+static void rand_phases(MODEL *model, int start, int end) {
+    int i;
+
+    for(i=start; i<=end; i++)
+       model->phi[i] = PI*(1.0 - 2.0*(float)rand()/RAND_MAX);
+
+}
+
+static void quant_phase(float *phase, float min, float max, int bits) {
+    int   levels = 1 << bits;
+    int   index;
+    float norm, step;
+
+    norm = (*phase - min)/(max - min);
+    index = floor(levels*norm);
+
+    //printf("phase %f norm %f index %d ", *phase, norm, index);
+    if (index < 0 ) index = 0;
+    if (index > (levels-1)) index = levels-1;
+    //printf("index %d ", index);
+    step = (max - min)/levels;
+    *phase = min + step*index + 0.5*step;
+    //printf("step %f phase %f\n", step, *phase);
+}
+
+static void quant_phases(MODEL *model, int start, int end, int bits) {
+    int i;
+
+    for(i=start; i<=end; i++) {
+       quant_phase(&model->phi[i], -PI, PI, bits);
+    }
+}
+
+static void fixed_bits_per_frame(struct PEXP *pexp, MODEL *model, int m, int 
budget) {
+    int res, finished;
+
+    res = 3;
+    finished = 0;
+
+    while(!finished) {
+       if (m > model->L/2)
+           res = 2;
+       if (((budget - res) < 0) || (m > model->L))
+           finished = 1;
+       else {
+           quant_phase(&model->phi[m], -PI, PI, res);
+           budget -= res;
+           m++;
+       }
+    }
+    printf("m: %d L: %d budget: %d\n", m, model->L, budget);
+    predict_phases(pexp, model, m, model->L);
+    //rand_phases(model, m, model->L);
+}
+
+/* used to plot histogram of quantisation error, for 3 bits, 8 levels,
+   should be uniform between +/- PI/8 */
+
+static void check_phase_quant(MODEL *model, float tol)
+{
+    int m;
+    float phi_before[MAX_AMP];
+
+    for(m=1; m<=model->L; m++)
+       phi_before[m] = model->phi[m];
+
+    quant_phases(model, 1, model->L, 3);
+
+    for(m=1; m<=model->L; m++) {
+       float err = phi_before[m] - model->phi[m];
+       printf("%f\n", err);
+       if (fabs(err) > tol)
+           exit(0);
+    }
+}
+
+
+static float est_phi1(MODEL *model, int start, int end)
+{
+    int m;
+    float delta, s, c, phi1_est;
+
+    if (end > model->L)
+       end = model->L;
+
+    s = c = 0.0;
+    for(m=start; m<end; m++) {
+       delta = model->phi[m+1] - model->phi[m];
+       s += sin(delta);
+       c += cos(delta);
+    }
+
+    phi1_est = atan2(s,c);
+
+    return phi1_est;
+}
+
+static void print_phi1_pred_error(MODEL *model, int start, int end)
+{
+    int m;
+    float phi1_est;
+
+    phi1_est = est_phi1(model, start, end);
+
+    for(m=start; m<end; m++) {
+       float err = model->phi[m+1] - model->phi[m] - phi1_est;
+       err = atan2(sin(err),cos(err));
+       printf("%f\n", err);
+    }
+}
+
+
+static void first_order_band(MODEL *model, int start, int end, float phi1_est)
+{
+    int   m;
+    float pred_err, av_pred_err;
+    float c,s;
+
+    s = c = 0.0;
+    for(m=start; m<end; m++) {
+       pred_err = model->phi[m] - phi1_est*m;
+       s += sin(pred_err);
+       c += cos(pred_err);
+    }
+
+    av_pred_err = atan2(s,c);
+    for(m=start; m<end; m++) {
+       model->phi[m] = av_pred_err + phi1_est*m;
+       model->phi[m] = atan2(sin(model->phi[m]), cos(model->phi[m]));
+    }
+
+}
+
+
+static void sub_linear(MODEL *model, int start, int end, float phi1_est)
+{
+    int   m;
+
+    for(m=start; m<end; m++) {
+       model->phi[m] = m*phi1_est;
+    }
+}
+
+
+static void top_amp(struct PEXP *pexp, MODEL *model, int start, int end, int 
n_harm, int pred)
+{
+    int removed = 0, not_removed = 0;
+    int top, i, j;
+    struct AMPINDEX sorted[MAX_AMP];
+
+    /* sort into ascending order of amplitude */
+
+    printf("\n");
+    for(i=start,j=0; i<end; i++,j++) {
+       sorted[j].amp = model->A[i];
+       sorted[j].index = i;
+       printf("%f ", model->A[i]);
+    }
+    bubbleSort(sorted, end-start);
+
+    printf("\n");
+    for(j=0; j<n_harm; j++)
+       printf("%d %f\n", j, sorted[j].amp);
+
+    /* keep phase of top n_harm, predict others */
+
+    for(i=start; i<end; i++) {
+       top = 0;
+       for(j=0; j<n_harm; j++) {
+           if (model->A[i] == sorted[j].amp) {
+               top = 1;
+               assert(i == sorted[j].index);
+           }
+       }
+
+       #define ALTTOP
+       #ifdef ALTTOP
+       model->phi[i] = 0.0; /* make sure */
+       if (top) {
+           model->phi[i] = i*pexp->phi1;
+           removed++;
+       }
+       else {
+           model->phi[i] = PI*(1.0 - 2.0*(float)rand()/RAND_MAX); // note: try 
rand for higher harms
+           removed++;
+       }
+       #else
+       if (!top) {
+           model->phi[i] = 0.0; /* make sure */
+           if (pred)  {
+               //model->phi[i] = pexp->phi_prev[i] + i*N*(model->Wo + 
pexp->Wo_prev)/2.0;
+               model->phi[i] = i*model->phi[1];
+           }
+           else
+               model->phi[i] = PI*(1.0 - 2.0*(float)rand()/RAND_MAX); // note: 
try rand for higher harms
+           removed++;
+       }
+       else {
+           /* need to make this work thru budget of bits */
+           quant_phase(&model->phi[i], -PI, PI, 3);
+           not_removed++;
+       }
+       #endif
+    }
+    printf("dim: %d rem %d not_rem %d\n", end-start, removed, not_removed);
+
+}
+
+
+static void limit_prediction_error(struct PEXP *pexp, MODEL *model, int start, 
int end, float limit)
+{
+    int   i;
+    float pred, pred_error, error;
+
+    for(i=start; i<=end; i++) {
+       pred = pexp->phi_prev[i] + N*i*(model->Wo + pexp->Wo_prev)/2.0;
+       pred_error = pred - model->phi[i];
+       pred_error -= TWO_PI*floor((pred_error+PI)/TWO_PI);
+       quant_phase(&pred_error, -limit, limit, 2);
+
+       error = pred - pred_error - model->phi[i];
+       error -= TWO_PI*floor((error+PI)/TWO_PI);
+       printf("%f\n", pred_error);
+       model->phi[i] = pred - pred_error;
+    }
+}
+
+
+static void quant_prediction_error(struct PEXP *pexp, MODEL *model, int start, 
int end, float limit)
+{
+    int   i;
+    float pred, pred_error;
+
+    for(i=start; i<=end; i++) {
+       pred = pexp->phi_prev[i] + N*i*(model->Wo + pexp->Wo_prev)/2.0;
+       pred_error = pred - model->phi[i];
+       pred_error -= TWO_PI*floor((pred_error+PI)/TWO_PI);
+
+       printf("%f\n", pred_error);
+       model->phi[i] = pred - pred_error;
+    }
+}
+
+
+static void print_sparse_pred_error(struct PEXP *pexp, MODEL *model, int 
start, int end, float mag_thresh)
+{
+    int    i, index;
+    float  mag, pred, error;
+    float  sparse_pe[MAX_AMP];
+
+    mag = 0.0;
+    for(i=start; i<=end; i++)
+       mag += model->A[i]*model->A[i];
+    mag = 10*log10(mag/(end-start));
+
+    if (mag > mag_thresh) {
+       for(i=0; i<MAX_AMP; i++) {
+           sparse_pe[i] = 0.0;
+       }
+
+       for(i=start; i<=end; i++) {
+           pred = pexp->phi_prev[i] + N*i*(model->Wo + pexp->Wo_prev)/2.0;
+           error = pred - model->phi[i];
+           error = atan2(sin(error),cos(error));
+
+           index = MAX_AMP*i*model->Wo/PI;
+           assert(index < MAX_AMP);
+           sparse_pe[index] = error;
+       }
+
+       /* dump spare phase vector in polar format */
+
+       for(i=0; i<MAX_AMP; i++)
+           printf("%f ", sparse_pe[i]);
+       printf("\n");
+    }
+}
+
+
+static void update_snr_calc(struct PEXP *pexp, MODEL *model, float before[])
+{
+    int m;
+    float signal, noise, diff;
+
+    signal = 0.0; noise = 0.0;
+    for(m=1; m<=model->L; m++) {
+       signal += model->A[m]*model->A[m];
+       diff = cos(model->phi[m]) - cos(before[m]);
+       noise  += pow(model->A[m]*diff, 2.0);
+       diff = sin(model->phi[m]) - sin(before[m]);
+       noise  += pow(model->A[m]*diff, 2.0);
+       //printf("%f %f\n", before[m], model->phi[m]);
+    }
+    //printf("%f %f snr = %f\n", signal, noise, 10.0*log10(signal/noise));
+    pexp->snr += 10.0*log10(signal/noise);
+}
+
+
+static void update_variance_calc(struct PEXP *pexp, MODEL *model, float 
before[])
+{
+    int m;
+    float diff;
+
+    for(m=1; m<model->L; m++) {
+        diff = model->phi[m] - before[m];
+        diff = atan2(sin(diff), cos(diff));
+        pexp->var += diff*diff;
+    }
+    pexp->var_n += model->L;
+}
+
+void print_vec(COMP cb[], int d, int e)
+{
+    int i,j;
+
+    for(j=0; j<e; j++) {
+       for(i=0; i<d; i++)
+           printf("%f %f ", cb[j*d+i].real, cb[j*d+i].imag);
+       printf("\n");
+    }
+}
+
+static COMP cconj(COMP a)
+{
+    COMP res;
+
+    res.real = a.real;
+    res.imag = -a.imag;
+
+    return res;
+}
+
+static COMP cadd(COMP a, COMP b)
+{
+    COMP res;
+
+    res.real = a.real + b.real;
+    res.imag = a.imag + b.imag;
+
+    return res;
+}
+
+static COMP cmult(COMP a, COMP b)
+{
+    COMP res;
+
+    res.real = a.real*b.real - a.imag*b.imag;
+    res.imag = a.real*b.imag + a.imag*b.real;
+
+    return res;
+}
+
+static int vq_phase(COMP cb[], COMP vec[], float weights[], int d, int e, 
float *se)
+{
+   float   error;      /* current error                */
+   int     besti;      /* best index so far            */
+   float   best_error; /* best error so far            */
+   int    i,j;
+   int     ignore;
+   COMP    diffr;
+   float   diffp, metric, best_metric;
+
+   besti = 0;
+   best_metric = best_error = 1E32;
+   for(j=0; j<e; j++) {
+       error = 0.0;
+       metric = 0.0;
+       for(i=0; i<d; i++) {
+           ignore = (vec[i].real == 0.0) && (vec[i].imag == 0.0);
+           if (!ignore) {
+               diffr = cmult(cb[j*d+i], cconj(vec[i]));
+               diffp = atan2(diffr.imag, diffr.real);
+               error  += diffp*diffp;
+               metric += weights[i]*weights[i]*diffp*diffp;
+               //metric += weights[i]*diffp*diffp;
+               //metric = log10(weights[i]*fabs(diffp));
+               //printf("diffp %f metric %f\n", diffp, metric);
+               //if (metric < log10(PI/(8.0*sqrt(3.0))))
+               //   metric = log10(PI/(8.0*sqrt(3.0)));
+           }
+       }
+       if (metric < best_metric) {
+           best_metric = metric;
+           best_error = error;
+           besti = j;
+       }
+   }
+
+   *se += best_error;
+
+   return(besti);
+}
+
+
+static float refine_Wo(struct PEXP     *pexp,
+                      MODEL           *model,
+                      int              start,
+                      int              end)
+
+{
+    int i;
+    float Wo_est, best_var, Wo, var, pred, error, best_Wo;
+
+    /* test variance over a range of Wo values */
+
+    Wo_est = (model->Wo + pexp->Wo_prev)/2.0;
+    best_var = 1E32;
+    for(Wo=0.97*Wo_est; Wo<=1.03*Wo_est; Wo+=0.001*Wo_est) {
+
+       /* predict phase and sum differences between harmonics */
+
+       var = 0.0;
+       for(i=start; i<=end; i++) {
+           pred = pexp->phi_prev[i] + N*i*Wo;
+           error = pred - model->phi[i];
+           error = atan2(sin(error),cos(error));
+           var += error*error;
+       }
+
+       if (var < best_var) {
+           best_var = var;
+           best_Wo = Wo;
+       }
+    }
+
+    return best_Wo;
+}
+
+
+static void split_vq(COMP sparse_pe_out[], struct PEXP *pexp, struct codebook 
*vq, float weights[], COMP sparse_pe_in[])
+{
+    int i, j, non_zero, vq_ind;
+
+    //printf("\n offset %d k %d m %d  j: ", vq->offset, vq->k, vq->m);
+    vq_ind = vq_phase(vq->cb, &sparse_pe_in[vq->offset], &weights[vq->offset], 
vq->k, vq->m, &pexp->vq_var);
+
+    non_zero = 0;
+    for(i=0, j=vq->offset; i<vq->k; i++,j++) {
+       //printf("%f ", atan2(sparse_pe[i].imag, sparse_pe[i].real));
+       if ((sparse_pe_in[j].real != 0.0) && (sparse_pe_in[j].imag != 0.0)) {
+           //printf("%d ", j);
+           sparse_pe_out[j] = vq->cb[vq->k * vq_ind + i];
+           non_zero++;
+       }
+    }
+    pexp->vq_var_n += non_zero;
+}
+
+
+static void sparse_vq_pred_error(struct PEXP     *pexp,
+                                MODEL           *model
+)
+{
+    int              i, index;
+    float            pred, error, error_q_angle, best_Wo;
+    COMP             sparse_pe_in[MAX_AMP], sparse_pe_out[MAX_AMP];
+    float            weights[MAX_AMP];
+    COMP             error_q_rect;
+
+     best_Wo = refine_Wo(pexp, model, 1, model->L);
+    //best_Wo = (model->Wo + pexp->Wo_prev)/2.0;
+
+     /* transform to sparse pred error vector */
+
+    for(i=0; i<MAX_AMP; i++) {
+       sparse_pe_in[i].real = 0.0;
+       sparse_pe_in[i].imag = 0.0;
+       sparse_pe_out[i].real = 0.0;
+       sparse_pe_out[i].imag = 0.0;
+    }
+
+    //printf("\n");
+    for(i=1; i<=model->L; i++) {
+       pred = pexp->phi_prev[i] + N*i*best_Wo;
+       error = pred - model->phi[i];
+
+       index = MAX_AMP*i*model->Wo/PI;
+       assert(index < MAX_AMP);
+       sparse_pe_in[index].real = cos(error);
+       sparse_pe_in[index].imag = sin(error);
+       sparse_pe_out[index] = sparse_pe_in[index];
+       weights[index] = model->A[i];
+       //printf("%d ", index);
+    }
+
+    /* vector quantise */
+
+    split_vq(sparse_pe_out, pexp, pexp->vq1, weights, sparse_pe_in);
+    split_vq(sparse_pe_out, pexp, pexp->vq2, weights, sparse_pe_in);
+    split_vq(sparse_pe_out, pexp, pexp->vq3, weights, sparse_pe_in);
+    split_vq(sparse_pe_out, pexp, pexp->vq4, weights, sparse_pe_in);
+    split_vq(sparse_pe_out, pexp, pexp->vq5, weights, sparse_pe_in);
+
+    /* transform quantised phases back */
+
+    for(i=1; i<=model->L; i++) {
+       pred = pexp->phi_prev[i] + N*i*best_Wo;
+
+       index = MAX_AMP*i*model->Wo/PI;
+       assert(index < MAX_AMP);
+       error_q_rect  = sparse_pe_out[index];
+       error_q_angle = atan2(error_q_rect.imag, error_q_rect.real);
+       model->phi[i] = pred - error_q_angle;
+       model->phi[i] = atan2(sin(model->phi[i]), cos(model->phi[i]));
+    }
+}
+
+
+static void predict_phases1(struct PEXP *pexp, MODEL *model, int start, int 
end) {
+    int i;
+    float best_Wo;
+
+    best_Wo = refine_Wo(pexp, model, 1, model->L);
+
+    for(i=start; i<=end; i++) {
+       model->phi[i] = pexp->phi_prev[i] + N*i*best_Wo;
+    }
+}
+
+
+/*
+  This functions tests theory that some bands can be combined together
+  due to less frequency resolution at higher frequencies.  This will
+  reduce the amount of information we need to encode.
+*/
+
+void smooth_phase(struct PEXP *pexp, MODEL *model, int mode)
+{
+    int    m, i, j, index, step, v, en, nav, st;
+    COMP   sparse_pe_in[MAX_AMP], av;
+    COMP   sparse_pe_out[MAX_AMP];
+    COMP   smoothed[MAX_AMP];
+    float  best_Wo, pred, err;
+    float  weights[MAX_AMP];
+    float  avw, smoothed_weights[MAX_AMP];
+    COMP   smoothed_in[MAX_AMP], smoothed_out[MAX_AMP];
+
+    best_Wo = refine_Wo(pexp, model, 1, model->L);
+
+    for(m=0; m<MAX_AMP; m++) {
+       sparse_pe_in[m].real = sparse_pe_in[m].imag = 0.0;
+       sparse_pe_out[m].real = sparse_pe_out[m].imag = 0.0;
+    }
+
+    /* set up sparse array */
+
+    for(m=1; m<=model->L; m++) {
+       pred = pexp->phi_prev[m] + N*m*best_Wo;
+       err = model->phi[m] - pred;
+       err = atan2(sin(err),cos(err));
+
+       index = MAX_AMP*m*model->Wo/PI;
+       assert(index < MAX_AMP);
+       sparse_pe_in[index].real = model->A[m]*cos(err);
+       sparse_pe_in[index].imag = model->A[m]*sin(err);
+       sparse_pe_out[index] = sparse_pe_in[index];
+       weights[index] = model->A[m];
+    }
+
+    /* now combine samples at high frequencies to reduce dimension */
+
+    step = 2;
+    st = 0;
+    for(i=st,v=0; i<MAX_AMP; i+=step,v++) {
+
+       /* average over one band */
+
+       av.real = 0.0; av.imag = 0.0; avw = 0.0; nav = 0;
+       en = i+step;
+       if (en > (MAX_AMP-1))
+           en = MAX_AMP-1;
+       for(j=i; j<en; j++) {
+           if ((sparse_pe_in[j].real != 0.0) &&(sparse_pe_in[j].imag != 0.0) ) 
{
+               av = cadd(av, sparse_pe_in[j]);
+               avw += weights[j];
+               nav++;
+           }
+       }
+       if (nav) {
+           smoothed[v] = av;
+           smoothed_weights[v] = avw/nav;
+       }
+       else
+           smoothed[v].real = smoothed[v].imag = 0.0;
+    }
+
+    if (mode == 2) {
+       for(i=0; i<MAX_AMP; i++) {
+           smoothed_in[i] = smoothed[i];
+           smoothed_out[i] = smoothed_in[i];
+       }
+       split_vq(smoothed_out, pexp, pexp->vq1, smoothed_weights, smoothed_in);
+       for(i=0; i<MAX_AMP; i++)
+           smoothed[i] = smoothed_out[i];
+    }
+
+    /* set all samples to smoothed average */
+
+    for(i=st,v=0; i<MAX_AMP; i+=step,v++) {
+       en = i+step;
+       if (en > (MAX_AMP-1))
+           en = MAX_AMP-1;
+       for(j=i; j<en; j++)
+           sparse_pe_out[j] = smoothed[v];
+       if (mode == 1)
+           printf("%f ", atan2(smoothed[v].imag, smoothed[v].real));
+    }
+    if (mode == 1)
+       printf("\n");
+
+    /* convert back to Am */
+
+    for(m=1; m<=model->L; m++) {
+       index = MAX_AMP*m*model->Wo/PI;
+       assert(index < MAX_AMP);
+       pred = pexp->phi_prev[m] + N*m*best_Wo;
+       err = atan2(sparse_pe_out[index].imag, sparse_pe_out[index].real);
+       model->phi[m] = pred + err;
+    }
+
+}
+
+/*
+  Another version of a functions that tests the theory that some bands
+  can be combined together due to less frequency resolution at higher
+  frequencies.  This will reduce the amount of information we need to
+  encode.
+*/
+
+void smooth_phase2(struct PEXP *pexp, MODEL *model) {
+    float m;
+    float step;
+    int   a,b,h,i;
+    float best_Wo, pred, err, s,c, phi1_;
+
+    best_Wo = refine_Wo(pexp, model, 1, model->L);
+
+    step = (float)model->L/30;
+    printf("\nL: %d step: %3.2f am,bm: ", model->L, step);
+    for(m=(float)model->L/4; m<=model->L; m+=step) {
+       a = floor(m);
+       b = floor(m+step);
+       if (b > model->L) b = model->L;
+       h = b-a;
+
+       printf("%d,%d,(%d)  ", a, b, h);
+       c = s = 0.0;
+       if (h>1) {
+           for(i=a; i<b; i++) {
+               pred = pexp->phi_prev[i] + N*i*best_Wo;
+               err = model->phi[i] - pred;
+               c += cos(err); s += sin(err);
+           }
+           phi1_ = atan2(s,c);
+           for(i=a; i<b; i++) {
+               pred = pexp->phi_prev[i] + N*i*best_Wo;
+               printf("%d: %4.3f -> ", i, model->phi[i]);
+               model->phi[i] = pred + phi1_;
+               model->phi[i] = atan2(sin(model->phi[i]),cos(model->phi[i]));
+               printf("%4.3f  ", model->phi[i]);
+           }
+       }
+    }
+}
+
+
+#define MAX_BINS 40
+//static float bins[] = {2600.0, 2800.0, 3000.0, 3200.0, 3400.0, 3600.0, 
3800.0, 4000.0};
+static float bins[] = {/*
+
+                       1000.0, 1100.0, 1200.0, 1300.0, 1400.0,
+                      1500.0, 1600.0, 1700.0, 1800.0, 1900.0,*/
+
+    2000.0, 2400.0, 2800.0,
+    3000.0, 3400.0, 3600.0, 4000.0};
+
+void smooth_phase3(struct PEXP *pexp, MODEL *model) {
+    int    m, i;
+    int   nbins;
+    int   b;
+    float f, best_Wo, pred, err;
+    COMP  av[MAX_BINS];
+
+    nbins = sizeof(bins)/sizeof(float);
+    best_Wo = refine_Wo(pexp, model, 1, model->L);
+
+    /* clear all bins */
+
+    for(i=0; i<MAX_BINS; i++) {
+       av[i].real = 0.0;
+       av[i].imag = 0.0;
+    }
+
+    /* add phases into each bin */
+
+    for(m=1; m<=model->L; m++) {
+       f = m*model->Wo*FS/TWO_PI;
+       if (f > bins[0]) {
+
+           /* find bin  */
+
+           for(i=0; i<nbins; i++)
+               if ((f > bins[i]) && (f <= bins[i+1]))
+                   b = i;
+           assert(b < MAX_BINS);
+
+           /* est predicted phase from average */
+
+           pred = pexp->phi_prev[m] + N*m*best_Wo;
+           err = model->phi[m] - pred;
+           av[b].real += cos(err); av[b].imag += sin(err);
+       }
+
+    }
+
+    /* use averages to est phases */
+
+    for(m=1; m<=model->L; m++) {
+       f = m*model->Wo*FS/TWO_PI;
+       if (f > bins[0]) {
+
+           /* find bin */
+
+           for(i=0; i<nbins; i++)
+               if ((f > bins[i]) && (f <= bins[i+1]))
+                   b = i;
+           assert(b < MAX_BINS);
+
+           /* add predicted phase error to this bin */
+
+           printf("L %d m %d f %4.f b %d\n", model->L, m, f, b);
+
+           pred = pexp->phi_prev[m] + N*m*best_Wo;
+           err = atan2(av[b].imag, av[b].real);
+           printf(" %d: %4.3f -> ", m, model->phi[m]);
+           model->phi[m] = pred + err;
+           model->phi[m] = atan2(sin(model->phi[m]),cos(model->phi[m]));
+           printf("%4.3f\n", model->phi[m]);
+       }
+    }
+    printf("\n");
+}
+
+
+/*
+   Try to code the phase of the largest amplitude in each band.  Randomise the
+   phase of the other harmonics. The theory is that only the largest harmonic
+   will be audible.
+*/
+
+void cb_phase1(struct PEXP *pexp, MODEL *model) {
+    int   m, i;
+    int   nbins;
+    int   b;
+    float f, best_Wo;
+    float max_val[MAX_BINS];
+    int   max_ind[MAX_BINS];
+
+    nbins = sizeof(bins)/sizeof(float);
+    best_Wo = refine_Wo(pexp, model, 1, model->L);
+
+    for(i=0; i<nbins; i++)
+       max_val[i] = 0.0;
+
+    /* determine max amplitude for each bin */
+
+    for(m=1; m<=model->L; m++) {
+       f = m*model->Wo*FS/TWO_PI;
+       if (f > bins[0]) {
+
+           /* find bin  */
+
+           for(i=0; i<nbins; i++)
+               if ((f > bins[i]) && (f <= bins[i+1]))
+                   b = i;
+           assert(b < MAX_BINS);
+
+           if (model->A[m] > max_val[b]) {
+               max_val[b] = model->A[m];
+               max_ind[b] = m;
+           }
+       }
+
+    }
+
+    /* randomise phase of other harmonics */
+
+    for(m=1; m<=model->L; m++) {
+       f = m*model->Wo*FS/TWO_PI;
+       if (f > bins[0]) {
+
+           /* find bin */
+
+           for(i=0; i<nbins; i++)
+               if ((f > bins[i]) && (f <= bins[i+1]))
+                   b = i;
+           assert(b < MAX_BINS);
+
+           if (m != max_ind[b])
+               model->phi[m] = pexp->phi_prev[m] + N*m*best_Wo;
+       }
+    }
+}
+
+
+/*
+   Theory is only the phase of the envelope of signal matters within a
+   Critical Band. So we estimate the position of an impulse that
+   approximates the envelope of the signal.
+*/
+
+void cb_phase2(struct PEXP *pexp, MODEL *model) {
+    int   st, m, i, a, b, step;
+    float diff,w,c,s,phi1_;
+    float A[MAX_AMP];
+
+    for(m=1; m<=model->L; m++) {
+       A[m] = model->A[m];
+       model->A[m] = 0;
+    }
+
+    st = 2*model->L/4;
+    step = 3;
+    model->phi[1] = pexp->phi_prev[1] + (pexp->Wo_prev+model->Wo)*N/2.0;
+
+    printf("L=%d ", model->L);
+    for(m=st; m<st+step*2; m+=step) {
+       a = m; b=a+step;
+       if (b > model->L)
+           b = model->L;
+
+       c = s = 0;
+       for(i=a; i<b-1; i++) {
+           printf("diff %d,%d ", i, i+1);
+           diff = model->phi[i+1] - model->phi[i];
+           //w = (model->A[i+1] + model->A[i])/2;
+           w = 1.0;
+           c += w*cos(diff); s += w*sin(diff);
+       }
+       phi1_ = atan2(s,c);
+       printf("replacing: ");
+       for(i=a; i<b; i++) {
+           //model->phi[i] = i*phi1_;
+           //model->phi[i] = i*model->phi[1];
+           //model->phi[i] = m*(pexp->Wo_prev+model->Wo)*N/2.0;
+           model->A[m] = A[m];
+           printf("%d ", i);
+       }
+       printf(" . ");
+    }
+    printf("\n");
+}
+
+
+static void smooth_phase4(MODEL *model) {
+    int    m;
+    float  phi_m, phi_m_1;
+
+    if (model->L > 25) {
+       printf("\nL %d\n", model->L);
+       for(m=model->L/2; m<=model->L; m+=2) {
+           if ((m+1) <= model->L) {
+               phi_m   = (model->phi[m] - model->phi[m+1])/2.0;
+               phi_m_1 = (model->phi[m+1] - model->phi[m])/2.0;
+               model->phi[m] = phi_m;
+               model->phi[m+1] = phi_m_1;
+               printf("%d %4.3f %4.3f  ", m, phi_m, phi_m_1);
+           }
+       }
+    }
+
+}
+
+/* try repeating last frame, just advance phases to account for time shift */
+
+static void repeat_phases(struct PEXP *pexp, MODEL *model) {
+    int m;
+
+    *model = pexp->prev_model;
+    for(m=1; m<=model->L; m++)
+       model->phi[m] += N*m*model->Wo;
+
+}
+
+/*---------------------------------------------------------------------------*\
+
+  phase_experiment()
+
+  Phase quantisation experiments.
+
+\*---------------------------------------------------------------------------*/
+
+void phase_experiment(struct PEXP *pexp, MODEL *model, char *arg) {
+    int              m;
+    float            before[MAX_AMP];
+
+    assert(pexp != NULL);
+    memcpy(before, &model->phi[0], sizeof(float)*MAX_AMP);
+
+    if (strcmp(arg,"q3") == 0) {
+       quant_phases(model, 1, model->L, 3);
+       update_snr_calc(pexp, model, before);
+       update_variance_calc(pexp, model, before);
+    }
+
+    if (strcmp(arg,"dec2") == 0) {
+       if ((pexp->frames % 2) != 0) {
+           predict_phases(pexp, model, 1, model->L);
+           update_snr_calc(pexp, model, before);
+           update_variance_calc(pexp, model, before);
+       }
+    }
+
+    if (strcmp(arg,"repeat") == 0) {
+       if ((pexp->frames % 2) != 0) {
+           repeat_phases(pexp, model);
+           update_snr_calc(pexp, model, before);
+           update_variance_calc(pexp, model, before);
+       }
+    }
+
+    if (strcmp(arg,"vq") == 0) {
+       sparse_vq_pred_error(pexp, model);
+       update_snr_calc(pexp, model, before);
+       update_variance_calc(pexp, model, before);
+    }
+
+    if (strcmp(arg,"pred") == 0)
+       predict_phases_state(pexp, model, 1, model->L);
+
+    if (strcmp(arg,"pred1k") == 0)
+       predict_phases(pexp, model, 1, model->L/4);
+
+    if (strcmp(arg,"smooth") == 0) {
+       smooth_phase(pexp, model,0);
+       update_snr_calc(pexp, model, before);
+    }
+    if (strcmp(arg,"smoothtrain") == 0)
+       smooth_phase(pexp, model,1);
+    if (strcmp(arg,"smoothvq") == 0) {
+       smooth_phase(pexp, model,2);
+       update_snr_calc(pexp, model, before);
+    }
+
+    if (strcmp(arg,"smooth2") == 0)
+       smooth_phase2(pexp, model);
+    if (strcmp(arg,"smooth3") == 0)
+       smooth_phase3(pexp, model);
+    if (strcmp(arg,"smooth4") == 0)
+       smooth_phase4(model);
+    if (strcmp(arg,"vqsmooth3") == 0)  {
+       sparse_vq_pred_error(pexp, model);
+       smooth_phase3(pexp, model);
+    }
+
+    if (strcmp(arg,"cb1") == 0) {
+       cb_phase1(pexp, model);
+       update_snr_calc(pexp, model, before);
+    }
+
+    if (strcmp(arg,"top") == 0) {
+       //top_amp(pexp, model, 1, model->L/4, 4, 1);
+       //top_amp(pexp, model, model->L/4, model->L/3, 4, 1);
+       //top_amp(pexp, model, model->L/3+1, model->L/2, 4, 1);
+       //top_amp(pexp, model, model->L/2, model->L, 6, 1);
+        //rand_phases(model, model->L/2, 3*model->L/4);
+       //struct_phases(pexp, model, model->L/2, 3*model->L/4);
+       //update_snr_calc(pexp, model, before);
+    }
+
+    if (strcmp(arg,"pred23") == 0) {
+       predict_phases2(pexp, model, model->L/2, model->L);
+       update_snr_calc(pexp, model, before);
+    }
+
+    if (strcmp(arg,"struct23") == 0) {
+       struct_phases(pexp, model, model->L/2, 3*model->L/4 );
+       update_snr_calc(pexp, model, before);
+    }
+
+    if (strcmp(arg,"addnoise") == 0) {
+       int m;
+       float max;
+
+       max = 0;
+       for(m=1; m<=model->L; m++)
+           if (model->A[m] > max)
+               max = model->A[m];
+       max = 20.0*log10(max);
+       for(m=1; m<=model->L; m++)
+           if (20.0*log10(model->A[m]) < (max-20)) {
+               model->phi[m] += (PI/4)*(1.0 -2.0*rand()/RAND_MAX);
+               //printf("m %d\n", m);
+           }
+    }
+
+    /* normalise phases */
+
+    for(m=1; m<=model->L; m++)
+       model->phi[m] = atan2(sin(model->phi[m]), cos(model->phi[m]));
+
+    /* update states */
+
+    //best_Wo = refine_Wo(pexp, model,  model->L/2, model->L);
+    pexp->phi1 += N*model->Wo;
+
+    for(m=1; m<=model->L; m++)
+       pexp->phi_prev[m] = model->phi[m];
+    pexp->Wo_prev = model->Wo;
+    pexp->frames++;
+    pexp->prev_model = *model;
+}
+
+#ifdef OLD_STUFF
+    //quant_phases(model, 1, model->L, 3);
+    //update_variance_calc(pexp, model, before);
+    //print_sparse_pred_error(pexp, model, 1, model->L, 40.0);
+
+    //sparse_vq_pred_error(pexp, model);
+
+    //quant_phases(model, model->L/4+1, model->L, 3);
+
+    //predict_phases1(pexp, model, 1, model->L/4);
+    //quant_phases(model, model->L/4+1, model->L, 3);
+
+    //quant_phases(model, 1, model->L/8, 3);
+
+    //update_snr_calc(pexp, model, before);
+    //update_variance_calc(pexp, model, before);
+
+    //fixed_bits_per_frame(pexp, model, 40);
+    //struct_phases(pexp, model, 1, model->L/4);
+    //rand_phases(model, 10, model->L);
+    //for(m=1; m<=model->L; m++)
+    // model->A[m] = 0.0;
+    //model->A[model->L/2] = 1000;
+    //repeat_phases(model, 20);
+    //predict_phases(pexp, model, 1, model->L/4);
+    //quant_phases(model, 1, 10, 3);
+    //quant_phases(model, 10, 20, 2);
+    //repeat_phases(model, 20);
+    //rand_phases(model, 3*model->L/4, model->L);
+    // print_phi1_pred_error(model, 1, model->L);
+    //predict_phases(pexp, model, 1, model->L/4);
+    //first_order_band(model, model->L/4, model->L/2);
+    //first_order_band(model, model->L/2, 3*model->L/4);
+    //if (fabs(model->Wo - pexp->Wo_prev)< 0.1*model->Wo)
+
+    //print_pred_error(pexp, model, 1, model->L, 40.0);
+    //print_sparse_pred_error(pexp, model, 1, model->L, 40.0);
+
+    //phi1_est = est_phi1(model, 1, model->L/4);
+    //print_phi1_pred_error(model, 1, model->L/4);
+
+    //first_order_band(model, 1, model->L/4, phi1_est);
+    //sub_linear(model, 1, model->L/4, phi1_est);
+
+    //top_amp(pexp, model, 1, model->L/4, 4);
+    //top_amp(pexp, model, model->L/4, model->L/2, 4);
+
+    //first_order_band(model, 1, model->L/4, phi1_est);
+    //first_order_band(model, model->L/4, model->L/2, phi1_est);
+
+    //if (fabs(model->Wo - pexp->Wo_prev) > 0.2*model->Wo)
+    // rand_phases(model, model->L/2, model->L);
+
+    //top_amp(pexp, model, 1, model->L/4, 4);
+    //top_amp(pexp, model, model->L/4, model->L/2, 8);
+    //top_amp(pexp, model, model->L/4+1, model->L/2, 10, 1);
+    //top_amp(pexp, model, 1, model->L/4, 10, 1);
+    //top_amp(pexp, model, model->L/4+1, 3*model->L/4, 10, 1);
+    //top_amp(pexp, model, 1, 3*model->L/4, 20, 1);
+
+    #ifdef REAS_CAND1
+    predict_phases(pexp, model, 1, model->L/4);
+    top_amp(pexp, model, model->L/4+1, 3*model->L/4, 10, 1);
+    rand_phases(model, 3*model->L/4+1, model->L);
+    #endif
+
+    #ifdef REAS_CAND2
+    if ((pexp->frames % 2) == 0) {
+       //printf("quant\n");
+       predict_phases(pexp, model, 1, model->L/4);
+       //top_amp(pexp, model, model->L/4+1, 3*model->L/4, 20, 1);
+       top_amp(pexp, model,  model->L/4+1, 7*model->L/8, 20, 1);
+       rand_phases(model, 7*model->L/8+1, model->L);
+     }
+    else {
+       //printf("predict\n");
+       predict_phases(pexp, model, 1, model->L);
+    }
+    #endif
+
+    //#define REAS_CAND3
+    #ifdef REAS_CAND3
+    if ((pexp->frames % 3) != 0) {
+       printf("pred\n");
+       predict_phases(pexp, model, 1, model->L);
+    }
+    else {
+       predict_phases(pexp, model, 1, model->L/4);
+       fixed_bits_per_frame(pexp, model, model->L/4+1, 60);
+    }
+    #endif
+    //predict_phases(pexp, model, model->L/4, model->L);
+
+
+    //print_pred_error(pexp, model, 1, model->L);
+    //limit_prediction_error(pexp, model, model->L/2, model->L, PI/2);
+#endif
diff --git a/gr-vocoder/lib/codec2/phase.h b/gr-vocoder/lib/codec2/phaseexp.h
similarity index 67%
copy from gr-vocoder/lib/codec2/phase.h
copy to gr-vocoder/lib/codec2/phaseexp.h
index 4f1a620..865e8ae 100644
--- a/gr-vocoder/lib/codec2/phase.h
+++ b/gr-vocoder/lib/codec2/phaseexp.h
@@ -1,15 +1,15 @@
 /*---------------------------------------------------------------------------*\
 
-  FILE........: phase.h
+  FILE........: phaseexp.h
   AUTHOR......: David Rowe
-  DATE CREATED: 1/2/09
+  DATE CREATED: June 2012
 
-  Functions for modelling phase.
+  Experimental functions for quantising, modelling and synthesising phase.
 
 \*---------------------------------------------------------------------------*/
 
 /*
-  Copyright (C) 2009 David Rowe
+  Copyright (C) 2012 David Rowe
 
   All rights reserved.
 
@@ -25,10 +25,15 @@
   along with this program; if not, see <http://www.gnu.org/licenses/>.
 */
 
-#ifndef __PHASE__
-#define __PHASE__
+#ifndef __PHASEEXP__
+#define __PHASEEXP__
 
-void phase_synth_zero_order(MODEL *model, float aks[], float *ex_phase,
-                           int order);
+#include "kiss_fft.h"
+
+struct PEXP;
+
+struct PEXP * phase_experiment_create();
+void phase_experiment_destroy(struct PEXP *pexp);
+void phase_experiment(struct PEXP *pexp, MODEL *model, char *arg);
 
 #endif
diff --git a/gr-vocoder/lib/codec2/pilot_coeff.h 
b/gr-vocoder/lib/codec2/pilot_coeff.h
new file mode 100644
index 0000000..66e7501
--- /dev/null
+++ b/gr-vocoder/lib/codec2/pilot_coeff.h
@@ -0,0 +1,34 @@
+/* Generated by pilot_coeff_file() Octave function */
+
+const float pilot_coeff[]={
+  0.00204705,
+  0.00276339,
+  0.00432595,
+  0.00697042,
+  0.0108452,
+  0.0159865,
+  0.0223035,
+  0.029577,
+  0.0374709,
+  0.045557,
+  0.0533491,
+  0.0603458,
+  0.0660751,
+  0.070138,
+  0.0722452,
+  0.0722452,
+  0.070138,
+  0.0660751,
+  0.0603458,
+  0.0533491,
+  0.045557,
+  0.0374709,
+  0.029577,
+  0.0223035,
+  0.0159865,
+  0.0108452,
+  0.00697042,
+  0.00432595,
+  0.00276339,
+  0.00204705
+};
diff --git a/gr-vocoder/lib/codec2/postfilter.c 
b/gr-vocoder/lib/codec2/postfilter.c
index 05d77c8..7c1a606 100644
--- a/gr-vocoder/lib/codec2/postfilter.c
+++ b/gr-vocoder/lib/codec2/postfilter.c
@@ -27,6 +27,7 @@
   along with this program; if not, see <http://www.gnu.org/licenses/>.
 */
 
+#include <assert.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <math.h>
@@ -34,6 +35,7 @@
 #include "defines.h"
 #include "comp.h"
 #include "dump.h"
+#include "sine.h"
 #include "postfilter.h"
 
 /*---------------------------------------------------------------------------*\
@@ -44,6 +46,11 @@
 
 #define BG_THRESH 40.0     /* only consider low levels signals for bg_est */
 #define BG_BETA    0.1     /* averaging filter constant                   */
+#define BG_MARGIN  6.0     /* harmonics this far above BG noise are
+                             randomised.  Helped make bg noise less
+                             spikey (impulsive) for mmt1, but speech was
+                              perhaps a little rougher.
+                          */
 
 /*---------------------------------------------------------------------------*\
 
@@ -61,7 +68,7 @@
   (5-12) are required to transmit the frequency selective voicing
   information.  Mixed excitation also requires accurate voicing
   estimation (parameter estimators always break occasionally under
-  exceptional condition).
+  exceptional conditions).
 
   In our case we use a post filter approach which requires no
   additional bits to be transmitted.  The decoder measures the average
@@ -97,15 +104,16 @@ void postfilter(
 )
 {
   int   m, uv;
-  float e;
+  float e, thresh;
 
   /* determine average energy across spectrum */
 
-  e = 0.0;
+  e = 1E-12;
   for(m=1; m<=model->L; m++)
       e += model->A[m]*model->A[m];
 
-  e = 10.0*log10(e/model->L);
+  assert(e > 0.0);
+  e = 10.0*log10f(e/model->L);
 
   /* If beneath threhold, update bg estimate.  The idea
      of the threshold is to prevent updating during high level
@@ -119,10 +127,11 @@ void postfilter(
   */
 
   uv = 0;
+  thresh = powf(10.0, (*bg_est + BG_MARGIN)/20.0);
   if (model->voiced)
       for(m=1; m<=model->L; m++)
-         if (20.0*log10(model->A[m]) < *bg_est) {
-             model->phi[m] = TWO_PI*(float)rand()/RAND_MAX;
+         if (model->A[m] < thresh) {
+             model->phi[m] = TWO_PI*(float)codec2_rand()/CODEC2_RAND_MAX;
              uv++;
          }
 
diff --git a/gr-vocoder/lib/codec2/quantise.c b/gr-vocoder/lib/codec2/quantise.c
index 25f2606..6423dc8 100644
--- a/gr-vocoder/lib/codec2/quantise.c
+++ b/gr-vocoder/lib/codec2/quantise.c
@@ -36,7 +36,9 @@
 #include "quantise.h"
 #include "lpc.h"
 #include "lsp.h"
-#include "fft.h"
+#include "kiss_fft.h"
+#undef TIMER
+#include "machdep.h"
 
 #define LSP_DELTA1 0.01         /* grid spacing for LSP root searches */
 
@@ -59,38 +61,20 @@ int lsp_bits(int i) {
     return lsp_cb[i].log2m;
 }
 
-#if VECTOR_QUANTISATION
-/*---------------------------------------------------------------------------*\
-
-  quantise_uniform
-
-  Simulates uniform quantising of a float.
-
-\*---------------------------------------------------------------------------*/
-
-void quantise_uniform(float *val, float min, float max, int bits)
-{
-    int   levels = 1 << (bits-1);
-    float norm;
-    int   index;
-
-    /* hard limit to quantiser range */
-
-    printf("min: %f  max: %f  val: %f  ", min, max, val[0]);
-    if (val[0] < min) val[0] = min;
-    if (val[0] > max) val[0] = max;
-
-    norm = (*val - min)/(max-min);
-    printf("%f  norm: %f  ", val[0], norm);
-    index = fabs(levels*norm + 0.5);
-
-    *val = min + index*(max-min)/levels;
-
-    printf("index %d  val_: %f\n", index, val[0]);
+int lspd_bits(int i) {
+    return lsp_cbd[i].log2m;
 }
 
+#ifdef __EXPERIMENTAL__
+int lspdt_bits(int i) {
+    return lsp_cbdt[i].log2m;
+}
 #endif
 
+int lsp_pred_vq_bits(int i) {
+    return lsp_cbjvm[i].log2m;
+}
+
 /*---------------------------------------------------------------------------*\
 
   quantise_init
@@ -127,13 +111,16 @@ long quantise(const float * cb, float vec[], float w[], 
int k, int m, float *se)
    float   beste;      /* best error so far            */
    long           j;
    int     i;
+   float   diff;
 
    besti = 0;
    beste = 1E32;
    for(j=0; j<m; j++) {
        e = 0.0;
-       for(i=0; i<k; i++)
-           e += pow((cb[j*k+i]-vec[i])*w[i],2.0);
+       for(i=0; i<k; i++) {
+           diff = cb[j*k+i]-vec[i];
+           e += powf(diff*w[i],2.0);
+       }
        if (e < beste) {
            beste = e;
            besti = j;
@@ -147,16 +134,16 @@ long quantise(const float * cb, float vec[], float w[], 
int k, int m, float *se)
 
 /*---------------------------------------------------------------------------*\
 
-  lspd_quantise
+  encode_lspds_scalar()
 
-  Scalar lsp difference quantiser.
+  Scalar/VQ LSP difference quantiser.
 
 \*---------------------------------------------------------------------------*/
 
-void lspd_quantise(
-  float lsp[],
-  float lsp_[],
-  int   order
+void encode_lspds_scalar(
+                int   indexes[],
+                float lsp[],
+                int   order
 )
 {
     int   i,k,m;
@@ -164,10 +151,15 @@ void lspd_quantise(
     float lsp__hz[LPC_MAX];
     float dlsp[LPC_MAX];
     float dlsp_[LPC_MAX];
-    float  wt[1];
+    float wt[LPC_MAX];
     const float *cb;
-    float se = 0.0;
-    int   indexes[LPC_MAX];
+    float se;
+
+    assert(order == LPC_ORD);
+
+    for(i=0; i<order; i++) {
+       wt[i] = 1.0;
+    }
 
     /* convert from radians to Hz so we can use human readable
        frequencies */
@@ -175,14 +167,13 @@ void lspd_quantise(
     for(i=0; i<order; i++)
        lsp_hz[i] = (4000.0/PI)*lsp[i];
 
-    dlsp[0] = lsp_hz[0];
-    for(i=1; i<order; i++)
-       dlsp[i] = lsp_hz[i] - lsp_hz[i-1];
-
-    /* simple uniform scalar quantisers */
+    //printf("\n");
 
     wt[0] = 1.0;
     for(i=0; i<order; i++) {
+
+       /* find difference from previous qunatised lsp */
+
        if (i)
            dlsp[i] = lsp_hz[i] - lsp__hz[i-1];
        else
@@ -194,496 +185,1361 @@ void lspd_quantise(
        indexes[i] = quantise(cb, &dlsp[i], wt, k, m, &se);
        dlsp_[i] = cb[indexes[i]*k];
 
+
        if (i)
            lsp__hz[i] = lsp__hz[i-1] + dlsp_[i];
        else
            lsp__hz[0] = dlsp_[0];
+
+       //printf("%d lsp %3.2f dlsp %3.2f dlsp_ %3.2f lsp_ %3.2f\n", i, 
lsp_hz[i], dlsp[i], dlsp_[i], lsp__hz[i]);
     }
-    for(; i<order; i++)
-       lsp__hz[i] = lsp__hz[i-1] + dlsp[i];
 
-    /* convert back to radians */
+}
+
+void decode_lspds_scalar(
+                float lsp_[],
+                int   indexes[],
+                int   order
+)
+{
+    int   i,k;
+    float lsp__hz[LPC_MAX];
+    float dlsp_[LPC_MAX];
+    const float *cb;
+
+    assert(order == LPC_ORD);
+
+     for(i=0; i<order; i++) {
+
+       k = lsp_cbd[i].k;
+       cb = lsp_cbd[i].cb;
+       dlsp_[i] = cb[indexes[i]*k];
+
+       if (i)
+           lsp__hz[i] = lsp__hz[i-1] + dlsp_[i];
+       else
+           lsp__hz[0] = dlsp_[0];
 
-    for(i=0; i<order; i++)
        lsp_[i] = (PI/4000.0)*lsp__hz[i];
+
+       //printf("%d dlsp_ %3.2f lsp_ %3.2f\n", i, dlsp_[i], lsp__hz[i]);
+    }
+
 }
 
+#ifdef __EXPERIMENTAL__
 /*---------------------------------------------------------------------------*\
 
-  lspd_vq_quantise
+  lspvq_quantise
 
-  Vector lsp difference quantiser.
+  Vector LSP quantiser.
 
 \*---------------------------------------------------------------------------*/
 
-void lspdvq_quantise(
+void lspvq_quantise(
   float lsp[],
   float lsp_[],
   int   order
 )
 {
     int   i,k,m,ncb, nlsp;
-    float dlsp[LPC_MAX];
-    float dlsp_[LPC_MAX];
-    float  wt[LPC_ORD];
+    float  wt[LPC_ORD], lsp_hz[LPC_ORD];
     const float *cb;
-    float se = 0.0;
+    float se;
     int   index;
 
-    dlsp[0] = lsp[0];
-    for(i=1; i<order; i++)
-       dlsp[i] = lsp[i] - lsp[i-1];
-
-    for(i=0; i<order; i++)
-       dlsp_[i] = dlsp[i];
-
-    for(i=0; i<order; i++)
+    for(i=0; i<LPC_ORD; i++) {
        wt[i] = 1.0;
+       lsp_hz[i] = 4000.0*lsp[i]/PI;
+    }
 
-    /* scalar quantise dLSPs 1,2,3,4,5 */
+    /* scalar quantise LSPs 1,2,3,4 */
 
-    for(i=0; i<5; i++) {
-       if (i)
-           dlsp[i] = (lsp[i] - lsp_[i-1])*4000.0/PI;
-       else
-           dlsp[0] = lsp[0]*4000.0/PI;
+    /* simple uniform scalar quantisers */
 
-       k = lsp_cbdvq[i].k;
-       m = lsp_cbdvq[i].m;
-       cb = lsp_cbdvq[i].cb;
-       index = quantise(cb, &dlsp[i], wt, k, m, &se);
-       dlsp_[i] = cb[index*k]*PI/4000.0;
+   for(i=0; i<4; i++) {
+       k = lsp_cb[i].k;
+       m = lsp_cb[i].m;
+       cb = lsp_cb[i].cb;
+       index = quantise(cb, &lsp_hz[i], wt, k, m, &se);
+       lsp_[i] = cb[index*k]*PI/4000.0;
+    }
 
-       if (i)
-           lsp_[i] = lsp_[i-1] + dlsp_[i];
-       else
-           lsp_[0] = dlsp_[0];
-    }
-    dlsp[i] = lsp[i] - lsp_[i-1];
-    dlsp_[i] = dlsp[i];
-
-    //printf("lsp[0] %f lsp_[0] %f\n", lsp[0], lsp_[0]);
-    //printf("lsp[1] %f lsp_[1] %f\n", lsp[1], lsp_[1]);
-
-#ifdef TT
-    /* VQ dLSPs 3,4,5 */
-
-    ncb = 2;
-    nlsp = 2;
-    k = lsp_cbdvq[ncb].k;
-    m = lsp_cbdvq[ncb].m;
-    cb = lsp_cbdvq[ncb].cb;
-    index = quantise(cb, &dlsp[nlsp], wt, k, m, &se);
-    dlsp_[nlsp] = cb[index*k];
-    dlsp_[nlsp+1] = cb[index*k+1];
-    dlsp_[nlsp+2] = cb[index*k+2];
-
-    lsp_[0] = dlsp_[0];
-    for(i=1; i<5; i++)
-       lsp_[i] = lsp_[i-1] + dlsp_[i];
-    dlsp[i] = lsp[i] - lsp_[i-1];
-    dlsp_[i] = dlsp[i];
+   //#define WGHT
+#ifdef WGHT
+    for(i=4; i<9; i++) {
+       wt[i] = 1.0/(lsp[i]-lsp[i-1]) + 1.0/(lsp[i+1]-lsp[i]);
+       //printf("wt[%d] = %f\n", i, wt[i]);
+    }
+    wt[9] = 1.0/(lsp[i]-lsp[i-1]);
 #endif
-    /* VQ dLSPs 6,7,8,9,10 */
 
-    ncb = 5;
-    nlsp = 5;
-    k = lsp_cbdvq[ncb].k;
-    m = lsp_cbdvq[ncb].m;
-    cb = lsp_cbdvq[ncb].cb;
-    index = quantise(cb, &dlsp[nlsp], wt, k, m, &se);
-    dlsp_[nlsp] = cb[index*k];
-    dlsp_[nlsp+1] = cb[index*k+1];
-    dlsp_[nlsp+2] = cb[index*k+2];
-    dlsp_[nlsp+3] = cb[index*k+3];
-    dlsp_[nlsp+4] = cb[index*k+4];
-
-    /* rebuild LSPs for dLSPs */
-
-    lsp_[0] = dlsp_[0];
-    for(i=1; i<order; i++)
-       lsp_[i] = lsp_[i-1] + dlsp_[i];
+    /* VQ LSPs 5,6,7,8,9,10 */
+
+    ncb = 4;
+    nlsp = 4;
+    k = lsp_cbjnd[ncb].k;
+    m = lsp_cbjnd[ncb].m;
+    cb = lsp_cbjnd[ncb].cb;
+    index = quantise(cb, &lsp_hz[nlsp], &wt[nlsp], k, m, &se);
+    for(i=4; i<LPC_ORD; i++) {
+       lsp_[i] = cb[index*k+i-4]*(PI/4000.0);
+       //printf("%4.f (%4.f) ", lsp_hz[i], cb[index*k+i-4]);
+    }
 }
 
-void check_lsp_order(float lsp[], int lpc_order)
-{
-    int   i;
-    float tmp;
+/*---------------------------------------------------------------------------*\
 
-    for(i=1; i<lpc_order; i++)
-       if (lsp[i] < lsp[i-1]) {
-           printf("swap %d\n",i);
-           tmp = lsp[i-1];
-           lsp[i-1] = lsp[i]-0.05;
-           lsp[i] = tmp+0.05;
-       }
-}
+  lspjnd_quantise
 
-void force_min_lsp_dist(float lsp[], int lpc_order)
-{
-    int   i;
+  Experimental JND LSP quantiser.
 
-    for(i=1; i<lpc_order; i++)
-       if ((lsp[i]-lsp[i-1]) < 0.01) {
-           lsp[i] += 0.01;
-       }
-}
+\*---------------------------------------------------------------------------*/
 
-/*---------------------------------------------------------------------------*\
+void lspjnd_quantise(float lsps[], float lsps_[], int order)
+{
+    int   i,k,m;
+    float  wt[LPC_ORD], lsps_hz[LPC_ORD];
+    const float *cb;
+    float se = 0.0;
+    int   index;
 
-  lpc_model_amplitudes
+    for(i=0; i<LPC_ORD; i++) {
+       wt[i] = 1.0;
+    }
 
-  Derive a LPC model for amplitude samples then estimate amplitude samples
-  from this model with optional LSP quantisation.
+    /* convert to Hz */
 
-  Returns the spectral distortion for this frame.
+    for(i=0; i<LPC_ORD; i++) {
+       lsps_hz[i] = lsps[i]*(4000.0/PI);
+       lsps_[i] = lsps[i];
+    }
 
-\*---------------------------------------------------------------------------*/
+    /* simple uniform scalar quantisers */
 
-float lpc_model_amplitudes(
-  float  Sn[],                 /* Input frame of speech samples */
-  float  w[],
-  MODEL *model,                        /* sinusoidal model parameters */
-  int    order,                 /* LPC model order */
-  int    lsp_quant,             /* optional LSP quantisation if non-zero */
-  float  ak[]                   /* output aks */
-)
-{
-  float Wn[M];
-  float R[LPC_MAX+1];
-  float E;
-  int   i,j;
-  float snr;
-  float lsp[LPC_MAX];
-  float lsp_hz[LPC_MAX];
-  float lsp_[LPC_MAX];
-  int   roots;                  /* number of LSP roots found */
-  int   index;
-  float se = 0.0;
-  int   k,m;
-  const float * cb;
-  float wt[LPC_MAX];
-
-  for(i=0; i<M; i++)
-    Wn[i] = Sn[i]*w[i];
-  autocorrelate(Wn,R,M,order);
-  levinson_durbin(R,ak,order);
-
-  E = 0.0;
-  for(i=0; i<=order; i++)
-      E += ak[i]*R[i];
+    for(i=0; i<4; i++) {
+       k = lsp_cbjnd[i].k;
+       m = lsp_cbjnd[i].m;
+       cb = lsp_cbjnd[i].cb;
+       index = quantise(cb, &lsps_hz[i], wt, k, m, &se);
+       lsps_[i] = cb[index*k]*(PI/4000.0);
+    }
 
-  for(i=0; i<order; i++)
-      wt[i] = 1.0;
+    /* VQ LSPs 5,6,7,8,9,10 */
+
+    k = lsp_cbjnd[4].k;
+    m = lsp_cbjnd[4].m;
+    cb = lsp_cbjnd[4].cb;
+    index = quantise(cb, &lsps_hz[4], &wt[4], k, m, &se);
+    //printf("k = %d m = %d c[0] %f cb[k] %f\n", k,m,cb[0],cb[k]);
+    //printf("index = %4d: ", index);
+    for(i=4; i<LPC_ORD; i++) {
+       lsps_[i] = cb[index*k+i-4]*(PI/4000.0);
+       //printf("%4.f (%4.f) ", lsps_hz[i], cb[index*k+i-4]);
+    }
+    //printf("\n");
+}
 
-  if (lsp_quant) {
-    roots = lpc_to_lsp(ak, order, lsp, 5, LSP_DELTA1);
-    if (roots != order)
-       printf("LSP roots not found\n");
+void compute_weights(const float *x, float *w, int ndim);
 
-    /* convert from radians to Hz to make quantisers more
-       human readable */
+/*---------------------------------------------------------------------------*\
 
-    for(i=0; i<order; i++)
-       lsp_hz[i] = (4000.0/PI)*lsp[i];
+  lspdt_quantise
 
-    /* simple uniform scalar quantisers */
+  LSP difference in time quantiser.  Split VQ, encoding LSPs 1-4 with
+  one VQ, and LSPs 5-10 with a second.  Update of previous lsp memory
+  is done outside of this function to handle dT between 10 or 20ms
+  frames.
 
-    for(i=0; i<10; i++) {
-       k = lsp_cb[i].k;
-       m = lsp_cb[i].m;
-       cb = lsp_cb[i].cb;
-       index = quantise(cb, &lsp_hz[i], wt, k, m, &se);
-       lsp_hz[i] = cb[index*k];
-    }
+  mode        action
+  ------------------
 
-    /* experiment: simulating uniform quantisation error
-    for(i=0; i<order; i++)
-       lsp[i] += PI*(12.5/4000.0)*(1.0 - 2.0*(float)rand()/RAND_MAX);
-    */
+  LSPDT_ALL   VQ LSPs 1-4 and 5-10
+  LSPDT_LOW   Just VQ LSPs 1-4, for LSPs 5-10 just copy previous
+  LSPDT_HIGH  Just VQ LSPs 5-10, for LSPs 1-4 just copy previous
 
-    for(i=0; i<order; i++)
-       lsp[i] = (PI/4000.0)*lsp_hz[i];
+\*---------------------------------------------------------------------------*/
 
-    /* Bandwidth Expansion (BW).  Prevents any two LSPs getting too
-       close together after quantisation.  We know from experiment
-       that LSP quantisation errors < 12.5Hz (25Hz setp size) are
-       inaudible so we use that as the minimum LSP separation.
-    */
+void lspdt_quantise(float lsps[], float lsps_[], float lsps__prev[], int mode)
+{
+    int   i;
+    float wt[LPC_ORD];
+    float lsps_dt[LPC_ORD];
+#ifdef TRY_LSPDT_VQ
+    int k,m;
+    int   index;
+    const float *cb;
+    float se = 0.0;
+#endif // TRY_LSPDT_VQ
 
-    for(i=1; i<5; i++) {
-       if (lsp[i] - lsp[i-1] < PI*(12.5/4000.0))
-           lsp[i] = lsp[i-1] + PI*(12.5/4000.0);
+    //compute_weights(lsps, wt, LPC_ORD);
+    for(i=0; i<LPC_ORD; i++) {
+    wt[i] = 1.0;
     }
 
-    /* as quantiser gaps increased, larger BW expansion was required
-       to prevent twinkly noises */
+    //compute_weights(lsps, wt, LPC_ORD );
 
-    for(i=5; i<8; i++) {
-       if (lsp[i] - lsp[i-1] < PI*(25.0/4000.0))
-           lsp[i] = lsp[i-1] + PI*(25.0/4000.0);
-    }
-    for(i=8; i<order; i++) {
-       if (lsp[i] - lsp[i-1] < PI*(75.0/4000.0))
-           lsp[i] = lsp[i-1] + PI*(75.0/4000.0);
+    for(i=0; i<LPC_ORD; i++) {
+       lsps_dt[i] = lsps[i] - lsps__prev[i];
+       lsps_[i] = lsps__prev[i];
     }
 
-    for(j=0; j<order; j++)
-       lsp_[j] = lsp[j];
-
-    lsp_to_lpc(lsp_, ak, order);
-#ifdef DUMP
-    dump_lsp(lsp);
+    //#define TRY_LSPDT_VQ
+#ifdef TRY_LSPDT_VQ
+    /* this actually improves speech a bit, but 40ms updates works surprsingly 
well.... */
+    k = lsp_cbdt[0].k;
+    m = lsp_cbdt[0].m;
+    cb = lsp_cbdt[0].cb;
+    index = quantise(cb, lsps_dt, wt, k, m, &se);
+    for(i=0; i<LPC_ORD; i++) {
+       lsps_[i] += cb[index*k + i];
+    }
 #endif
-  }
 
-#ifdef DUMP
-  dump_E(E);
+}
 #endif
-  #ifdef SIM_QUANT
-  /* simulated LPC energy quantisation */
-  {
-      float e = 10.0*log10(E);
-      e += 2.0*(1.0 - 2.0*(float)rand()/RAND_MAX);
-      E = pow(10.0,e/10.0);
-  }
-  #endif
 
-  aks_to_M2(ak,order,model,E,&snr, 1);   /* {ak} -> {Am} LPC decode */
+#define MIN(a,b) ((a)<(b)?(a):(b))
+#define MAX_ENTRIES 16384
 
-  return snr;
+void compute_weights(const float *x, float *w, int ndim)
+{
+  int i;
+  w[0] = MIN(x[0], x[1]-x[0]);
+  for (i=1;i<ndim-1;i++)
+    w[i] = MIN(x[i]-x[i-1], x[i+1]-x[i]);
+  w[ndim-1] = MIN(x[ndim-1]-x[ndim-2], PI-x[ndim-1]);
+
+  for (i=0;i<ndim;i++)
+    w[i] = 1./(.01+w[i]);
+  //w[0]*=3;
+  //w[1]*=2;
 }
 
-/*---------------------------------------------------------------------------*\
-
-   aks_to_M2()
-
-   Transforms the linear prediction coefficients to spectral amplitude
-   samples.  This function determines A(m) from the average energy per
-   band using an FFT.
+/* LSP weight calculation ported from m-file function kindly submitted
+   by Anssi, OH3GDD */
 
-\*---------------------------------------------------------------------------*/
+void compute_weights_anssi_mode2(const float *x, float *w, int ndim)
+{
+  int i;
+  float d[LPC_ORD];
+
+  assert(ndim == LPC_ORD);
+
+  for(i=0; i<LPC_ORD; i++)
+      d[i] = 1.0;
+
+  d[0] = x[1];
+  for (i=1; i<LPC_ORD-1; i++)
+      d[i] = x[i+1] - x[i-1];
+  d[LPC_ORD-1] = PI - x[8];
+  for (i=0; i<LPC_ORD; i++) {
+        if (x[i]<((400.0/4000.0)*PI))
+            w[i]=5.0/(0.01+d[i]);
+        else if (x[i]<((700.0/4000.0)*PI))
+            w[i]=4.0/(0.01+d[i]);
+        else if (x[i]<((1200.0/4000.0)*PI))
+            w[i]=3.0/(0.01+d[i]);
+        else if (x[i]<((2000.0/4000.0)*PI))
+            w[i]=2.0/(0.01+d[i]);
+        else
+            w[i]=1.0/(0.01+d[i]);
+
+        w[i]=pow(w[i]+0.3, 0.66);
+  }
+}
 
-void aks_to_M2(
-  float  ak[], /* LPC's */
-  int    order,
-  MODEL *model,        /* sinusoidal model parameters for this frame */
-  float  E,    /* energy term */
-  float *snr,  /* signal to noise ratio for this frame in dB */
-  int    dump   /* true to dump sample to dump file */
-)
+int find_nearest(const float *codebook, int nb_entries, float *x, int ndim)
 {
-  COMP Pw[FFT_DEC];    /* power spectrum */
-  int i,m;             /* loop variables */
-  int am,bm;           /* limits of current band */
-  float r;             /* no. rads/bin */
-  float Em;            /* energy in band */
-  float Am;            /* spectral amplitude sample */
-  float signal, noise;
+  int i, j;
+  float min_dist = 1e15;
+  int nearest = 0;
 
-  r = TWO_PI/(FFT_DEC);
+  for (i=0;i<nb_entries;i++)
+  {
+    float dist=0;
+    for (j=0;j<ndim;j++)
+      dist += (x[j]-codebook[i*ndim+j])*(x[j]-codebook[i*ndim+j]);
+    if (dist<min_dist)
+    {
+      min_dist = dist;
+      nearest = i;
+    }
+  }
+  return nearest;
+}
 
-  /* Determine DFT of A(exp(jw)) --------------------------------------------*/
+int find_nearest_weighted(const float *codebook, int nb_entries, float *x, 
const float *w, int ndim)
+{
+  int i, j;
+  float min_dist = 1e15;
+  int nearest = 0;
 
-  for(i=0; i<FFT_DEC; i++) {
-    Pw[i].real = 0.0;
-    Pw[i].imag = 0.0;
+  for (i=0;i<nb_entries;i++)
+  {
+    float dist=0;
+    for (j=0;j<ndim;j++)
+      dist += w[j]*(x[j]-codebook[i*ndim+j])*(x[j]-codebook[i*ndim+j]);
+    if (dist<min_dist)
+    {
+      min_dist = dist;
+      nearest = i;
+    }
   }
+  return nearest;
+}
 
-  for(i=0; i<=order; i++)
-    Pw[i].real = ak[i];
-  fft(&Pw[0].real,FFT_DEC,1);
-
-  /* Determine power spectrum P(w) = E/(A(exp(jw))^2 ------------------------*/
+void lspjvm_quantise(float *x, float *xq, int ndim)
+{
+  int i, n1, n2, n3;
+  float err[LPC_ORD], err2[LPC_ORD], err3[LPC_ORD];
+  float w[LPC_ORD], w2[LPC_ORD], w3[LPC_ORD];
+  const float *codebook1 = lsp_cbjvm[0].cb;
+  const float *codebook2 = lsp_cbjvm[1].cb;
+  const float *codebook3 = lsp_cbjvm[2].cb;
 
-  for(i=0; i<FFT_DEC/2; i++)
-    Pw[i].real = E/(Pw[i].real*Pw[i].real + Pw[i].imag*Pw[i].imag);
-#ifdef DUMP
-  if (dump)
-      dump_Pw(Pw);
-#endif
+  w[0] = MIN(x[0], x[1]-x[0]);
+  for (i=1;i<ndim-1;i++)
+    w[i] = MIN(x[i]-x[i-1], x[i+1]-x[i]);
+  w[ndim-1] = MIN(x[ndim-1]-x[ndim-2], PI-x[ndim-1]);
 
-  /* Determine magnitudes by linear interpolation of P(w) -------------------*/
+  compute_weights(x, w, ndim);
 
-  signal = noise = 0.0;
-  for(m=1; m<=model->L; m++) {
-    am = floor((m - 0.5)*model->Wo/r + 0.5);
-    bm = floor((m + 0.5)*model->Wo/r + 0.5);
-    Em = 0.0;
+  n1 = find_nearest(codebook1, lsp_cbjvm[0].m, x, ndim);
 
-    for(i=am; i<bm; i++)
-      Em += Pw[i].real;
-    Am = sqrt(Em);
+  for (i=0;i<ndim;i++)
+  {
+    xq[i] = codebook1[ndim*n1+i];
+    err[i] = x[i] - xq[i];
+  }
+  for (i=0;i<ndim/2;i++)
+  {
+    err2[i] = err[2*i];
+    err3[i] = err[2*i+1];
+    w2[i] = w[2*i];
+    w3[i] = w[2*i+1];
+  }
+  n2 = find_nearest_weighted(codebook2, lsp_cbjvm[1].m, err2, w2, ndim/2);
+  n3 = find_nearest_weighted(codebook3, lsp_cbjvm[2].m, err3, w3, ndim/2);
 
-    signal += pow(model->A[m],2.0);
-    noise  += pow(model->A[m] - Am,2.0);
-    model->A[m] = Am;
+  for (i=0;i<ndim/2;i++)
+  {
+    xq[2*i] += codebook2[ndim*n2/2+i];
+    xq[2*i+1] += codebook3[ndim*n3/2+i];
   }
-  *snr = 10.0*log10(signal/noise);
 }
 
-/*---------------------------------------------------------------------------*\
+#ifdef __EXPERIMENTAL__
 
-  FUNCTION....: encode_Wo()
-  AUTHOR......: David Rowe
-  DATE CREATED: 22/8/2010
+#define MBEST_STAGES 4
 
-  Encodes Wo using a WO_LEVELS quantiser.
+struct MBEST_LIST {
+    int   index[MBEST_STAGES];    /* index of each stage that lead us to this 
error */
+    float error;
+};
 
-\*---------------------------------------------------------------------------*/
+struct MBEST {
+    int                entries;   /* number of entries in mbest list   */
+    struct MBEST_LIST *list;
+};
 
-int encode_Wo(float Wo)
-{
-    int   index;
-    float Wo_min = TWO_PI/P_MAX;
-    float Wo_max = TWO_PI/P_MIN;
-    float norm;
 
-    norm = (Wo - Wo_min)/(Wo_max - Wo_min);
-    index = floor(WO_LEVELS * norm + 0.5);
-    if (index < 0 ) index = 0;
-    if (index > (WO_LEVELS-1)) index = WO_LEVELS-1;
+static struct MBEST *mbest_create(int entries) {
+    int           i,j;
+    struct MBEST *mbest;
 
-    return index;
+    assert(entries > 0);
+    mbest = (struct MBEST *)malloc(sizeof(struct MBEST));
+    assert(mbest != NULL);
+
+    mbest->entries = entries;
+    mbest->list = (struct MBEST_LIST *)malloc(entries*sizeof(struct 
MBEST_LIST));
+    assert(mbest->list != NULL);
+
+    for(i=0; i<mbest->entries; i++) {
+       for(j=0; j<MBEST_STAGES; j++)
+           mbest->list[i].index[j] = 0;
+       mbest->list[i].error = 1E32;
+    }
+
+    return mbest;
+}
+
+
+static void mbest_destroy(struct MBEST *mbest) {
+    assert(mbest != NULL);
+    free(mbest->list);
+    free(mbest);
 }
 
+
 /*---------------------------------------------------------------------------*\
 
-  FUNCTION....: decode_Wo()
-  AUTHOR......: David Rowe
-  DATE CREATED: 22/8/2010
+  mbest_insert
 
-  Decodes Wo using a WO_LEVELS quantiser.
+  Insert the results of a vector to codebook entry comparison. The
+  list is ordered in order or error, so those entries with the
+  smallest error will be first on the list.
 
 \*---------------------------------------------------------------------------*/
 
-float decode_Wo(int index)
-{
-    float Wo_min = TWO_PI/P_MAX;
-    float Wo_max = TWO_PI/P_MIN;
-    float step;
-    float Wo;
+static void mbest_insert(struct MBEST *mbest, int index[], float error) {
+    int                i, j, found;
+    struct MBEST_LIST *list    = mbest->list;
+    int                entries = mbest->entries;
+
+    found = 0;
+    for(i=0; i<entries && !found; i++)
+       if (error < list[i].error) {
+           found = 1;
+           for(j=entries-1; j>i; j--)
+               list[j] = list[j-1];
+           for(j=0; j<MBEST_STAGES; j++)
+               list[i].index[j] = index[j];
+           list[i].error = error;
+       }
+}
 
-    step = (Wo_max - Wo_min)/WO_LEVELS;
-    Wo   = Wo_min + step*(index);
 
-    return Wo;
+static void mbest_print(char title[], struct MBEST *mbest) {
+    int i,j;
+
+    printf("%s\n", title);
+    for(i=0; i<mbest->entries; i++) {
+       for(j=0; j<MBEST_STAGES; j++)
+           printf("  %4d ", mbest->list[i].index[j]);
+       printf(" %f\n", mbest->list[i].error);
+    }
 }
 
+
 /*---------------------------------------------------------------------------*\
 
-  FUNCTION....: speech_to_uq_lsps()
-  AUTHOR......: David Rowe
-  DATE CREATED: 22/8/2010
+  mbest_search
 
-  Analyse a windowed frame of time domain speech to determine LPCs
-  which are the converted to LSPs for quantisation and transmission
-  over the channel.
+  Searches vec[] to a codebbook of vectors, and maintains a list of the mbest
+  closest matches.
 
 \*---------------------------------------------------------------------------*/
 
-float speech_to_uq_lsps(float lsp[],
-                       float ak[],
-                       float Sn[],
-                       float w[],
-                       int   order
+static void mbest_search(
+                 const float  *cb,     /* VQ codebook to search         */
+                 float         vec[],  /* target vector                 */
+                 float         w[],    /* weighting vector              */
+                 int           k,      /* dimension of vector           */
+                 int           m,      /* number on entries in codebook */
+                 struct MBEST *mbest,  /* list of closest matches       */
+                 int           index[] /* indexes that lead us here     */
 )
 {
-    int   i, roots;
-    float Wn[M];
-    float R[LPC_MAX+1];
-    float E;
+   float   e;
+   int     i,j;
+   float   diff;
 
-    for(i=0; i<M; i++)
-       Wn[i] = Sn[i]*w[i];
-    autocorrelate(Wn, R, M, order);
-    levinson_durbin(R, ak, order);
+   for(j=0; j<m; j++) {
+       e = 0.0;
+       for(i=0; i<k; i++) {
+           diff = cb[j*k+i]-vec[i];
+           e += pow(diff*w[i],2.0);
+       }
+       index[0] = j;
+       mbest_insert(mbest, index, e);
+   }
+}
 
-    E = 0.0;
-    for(i=0; i<=order; i++)
-       E += ak[i]*R[i];
 
-    roots = lpc_to_lsp(ak, order, lsp, 5, LSP_DELTA1);
-    if (roots != order) {
-       /* for some reason LSP roots could not be found   */
-       /* some alpha testers are reporting this condition */
-       fprintf(stderr, "LSP roots not found!\nroots = %d\n", roots);
-       for(i=0; i<=order; i++)
-           fprintf(stderr, "a[%d] = %f\n", i, ak[i]);
+/* 3 stage VQ LSP quantiser.  Design and guidance kindly submitted by Anssi, 
OH3GDD */
 
-       /* some benign LSP values we can use instead */
+void lspanssi_quantise(float *x, float *xq, int ndim, int mbest_entries)
+{
+  int i, j, n1, n2, n3, n4;
+  float w[LPC_ORD];
+  const float *codebook1 = lsp_cbvqanssi[0].cb;
+  const float *codebook2 = lsp_cbvqanssi[1].cb;
+  const float *codebook3 = lsp_cbvqanssi[2].cb;
+  const float *codebook4 = lsp_cbvqanssi[3].cb;
+  struct MBEST *mbest_stage1, *mbest_stage2, *mbest_stage3, *mbest_stage4;
+  float target[LPC_ORD];
+  int   index[MBEST_STAGES];
+
+  mbest_stage1 = mbest_create(mbest_entries);
+  mbest_stage2 = mbest_create(mbest_entries);
+  mbest_stage3 = mbest_create(mbest_entries);
+  mbest_stage4 = mbest_create(mbest_entries);
+  for(i=0; i<MBEST_STAGES; i++)
+      index[i] = 0;
+
+  compute_weights_anssi_mode2(x, w, ndim);
+
+  #ifdef DUMP
+  dump_weights(w, ndim);
+  #endif
+
+  /* Stage 1 */
+
+  mbest_search(codebook1, x, w, ndim, lsp_cbvqanssi[0].m, mbest_stage1, index);
+  mbest_print("Stage 1:", mbest_stage1);
+
+  /* Stage 2 */
+
+  for (j=0; j<mbest_entries; j++) {
+      index[1] = n1 = mbest_stage1->list[j].index[0];
+      for(i=0; i<ndim; i++)
+         target[i] = x[i] - codebook1[ndim*n1+i];
+      mbest_search(codebook2, target, w, ndim, lsp_cbvqanssi[1].m, 
mbest_stage2, index);
+  }
+  mbest_print("Stage 2:", mbest_stage2);
+
+  /* Stage 3 */
+
+  for (j=0; j<mbest_entries; j++) {
+      index[2] = n1 = mbest_stage2->list[j].index[1];
+      index[1] = n2 = mbest_stage2->list[j].index[0];
+      for(i=0; i<ndim; i++)
+         target[i] = x[i] - codebook1[ndim*n1+i] - codebook2[ndim*n2+i];
+      mbest_search(codebook3, target, w, ndim, lsp_cbvqanssi[2].m, 
mbest_stage3, index);
+  }
+  mbest_print("Stage 3:", mbest_stage3);
+
+  /* Stage 4 */
+
+  for (j=0; j<mbest_entries; j++) {
+      index[3] = n1 = mbest_stage3->list[j].index[2];
+      index[2] = n2 = mbest_stage3->list[j].index[1];
+      index[1] = n3 = mbest_stage3->list[j].index[0];
+      for(i=0; i<ndim; i++)
+         target[i] = x[i] - codebook1[ndim*n1+i] - codebook2[ndim*n2+i] - 
codebook3[ndim*n3+i];
+      mbest_search(codebook4, target, w, ndim, lsp_cbvqanssi[3].m, 
mbest_stage4, index);
+  }
+  mbest_print("Stage 4:", mbest_stage4);
+
+  n1 = mbest_stage4->list[0].index[3];
+  n2 = mbest_stage4->list[0].index[2];
+  n3 = mbest_stage4->list[0].index[1];
+  n4 = mbest_stage4->list[0].index[0];
+  for (i=0;i<ndim;i++)
+      xq[i] = codebook1[ndim*n1+i] + codebook2[ndim*n2+i] + 
codebook3[ndim*n3+i] + codebook4[ndim*n4+i];
+
+  mbest_destroy(mbest_stage1);
+  mbest_destroy(mbest_stage2);
+  mbest_destroy(mbest_stage3);
+  mbest_destroy(mbest_stage4);
+}
+#endif
+
+int check_lsp_order(float lsp[], int lpc_order)
+{
+    int   i;
+    float tmp;
+    int   swaps = 0;
+
+    for(i=1; i<lpc_order; i++)
+       if (lsp[i] < lsp[i-1]) {
+           //fprintf(stderr, "swap %d\n",i);
+           swaps++;
+           tmp = lsp[i-1];
+           lsp[i-1] = lsp[i]-0.1;
+           lsp[i] = tmp+0.1;
+            i = 1; /* start check again, as swap may have caused out of order 
*/
+       }
+
+    return swaps;
+}
+
+void force_min_lsp_dist(float lsp[], int lpc_order)
+{
+    int   i;
+
+    for(i=1; i<lpc_order; i++)
+       if ((lsp[i]-lsp[i-1]) < 0.01) {
+           lsp[i] += 0.01;
+       }
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+   lpc_post_filter()
+
+   Applies a post filter to the LPC synthesis filter power spectrum
+   Pw, which supresses the inter-formant energy.
+
+   The algorithm is from p267 (Section 8.6) of "Digital Speech",
+   edited by A.M. Kondoz, 1994 published by Wiley and Sons.  Chapter 8
+   of this text is on the MBE vocoder, and this is a freq domain
+   adaptation of post filtering commonly used in CELP.
+
+   I used the Octave simulation lpcpf.m to get an understaing of the
+   algorithm.
+
+   Requires two more FFTs which is significantly more MIPs.  However
+   it should be possible to implement this more efficiently in the
+   time domain.  Just not sure how to handle relative time delays
+   between the synthesis stage and updating these coeffs.  A smaller
+   FFT size might also be accetable to save CPU.
+
+   TODO:
+   [ ] sync var names between Octave and C version
+   [ ] doc gain normalisation
+   [ ] I think the first FFT is not rqd as we do the same
+       thing in aks_to_M2().
+
+\*---------------------------------------------------------------------------*/
+
+void lpc_post_filter(kiss_fft_cfg fft_fwd_cfg, MODEL *model, COMP Pw[], float 
ak[],
+                     int order, int dump, float beta, float gamma, int 
bass_boost)
+{
+    int   i;
+    COMP  x[FFT_ENC];   /* input to FFTs                */
+    COMP  Aw[FFT_ENC];  /* LPC analysis filter spectrum */
+    COMP  Ww[FFT_ENC];  /* weighting spectrum           */
+    float Rw[FFT_ENC];  /* R = WA                       */
+    float e_before, e_after, gain;
+    float Pfw[FFT_ENC]; /* Post filter mag spectrum     */
+    float max_Rw, min_Rw;
+    float coeff;
+    TIMER_VAR(tstart, tfft1, taw, tfft2, tww, tr);
+
+    TIMER_SAMPLE(tstart);
+
+    /* Determine LPC inverse filter spectrum 1/A(exp(jw)) -----------*/
+
+    /* we actually want the synthesis filter A(exp(jw)) but the
+       inverse (analysis) filter is easier to find as it's FIR, we
+       just use the inverse of 1/A to get the synthesis filter
+       A(exp(jw)) */
+
+    for(i=0; i<FFT_ENC; i++) {
+       x[i].real = 0.0;
+       x[i].imag = 0.0;
+    }
+
+    for(i=0; i<=order; i++)
+       x[i].real = ak[i];
+    kiss_fft(fft_fwd_cfg, (kiss_fft_cpx *)x, (kiss_fft_cpx *)Aw);
+
+    TIMER_SAMPLE_AND_LOG(tfft1, tstart, "        fft1");
+
+    for(i=0; i<FFT_ENC/2; i++) {
+       Aw[i].real = 1.0/(Aw[i].real*Aw[i].real + Aw[i].imag*Aw[i].imag);
+    }
+
+    TIMER_SAMPLE_AND_LOG(taw, tfft1, "        Aw");
+
+    /* Determine weighting filter spectrum W(exp(jw)) ---------------*/
+
+    for(i=0; i<FFT_ENC; i++) {
+       x[i].real = 0.0;
+       x[i].imag = 0.0;
+    }
+
+    x[0].real = ak[0];
+    coeff = gamma;
+    for(i=1; i<=order; i++) {
+       x[i].real = ak[i] * coeff;
+        coeff *= gamma;
+    }
+    kiss_fft(fft_fwd_cfg, (kiss_fft_cpx *)x, (kiss_fft_cpx *)Ww);
+
+    TIMER_SAMPLE_AND_LOG(tfft2, taw, "        fft2");
+
+    for(i=0; i<FFT_ENC/2; i++) {
+       Ww[i].real = Ww[i].real*Ww[i].real + Ww[i].imag*Ww[i].imag;
+    }
+
+    TIMER_SAMPLE_AND_LOG(tww, tfft2, "        Ww");
+
+    /* Determined combined filter R = WA ---------------------------*/
+
+    max_Rw = 0.0; min_Rw = 1E32;
+    for(i=0; i<FFT_ENC/2; i++) {
+       Rw[i] = sqrtf(Ww[i].real * Aw[i].real);
+       if (Rw[i] > max_Rw)
+           max_Rw = Rw[i];
+       if (Rw[i] < min_Rw)
+           min_Rw = Rw[i];
+
+    }
+
+    TIMER_SAMPLE_AND_LOG(tr, tww, "        R");
+
+    #ifdef DUMP
+    if (dump)
+      dump_Rw(Rw);
+    #endif
+
+    /* create post filter mag spectrum and apply ------------------*/
+
+    /* measure energy before post filtering */
+
+    e_before = 1E-4;
+    for(i=0; i<FFT_ENC/2; i++)
+       e_before += Pw[i].real;
+
+    /* apply post filter and measure energy  */
+
+    #ifdef DUMP
+    if (dump)
+       dump_Pwb(Pw);
+    #endif
+
+    e_after = 1E-4;
+    for(i=0; i<FFT_ENC/2; i++) {
+       Pfw[i] = powf(Rw[i], beta);
+       Pw[i].real *= Pfw[i] * Pfw[i];
+       e_after += Pw[i].real;
+    }
+    gain = e_before/e_after;
+
+    /* apply gain factor to normalise energy */
+
+    for(i=0; i<FFT_ENC/2; i++) {
+       Pw[i].real *= gain;
+    }
+
+    if (bass_boost) {
+        /* add 3dB to first 1 kHz to account for LP effect of PF */
+
+        for(i=0; i<FFT_ENC/8; i++) {
+            Pw[i].real *= 1.4*1.4;
+        }
+    }
+
+    TIMER_SAMPLE_AND_LOG2(tr, "        filt");
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+   aks_to_M2()
+
+   Transforms the linear prediction coefficients to spectral amplitude
+   samples.  This function determines A(m) from the average energy per
+   band using an FFT.
+
+\*---------------------------------------------------------------------------*/
+
+void aks_to_M2(
+  kiss_fft_cfg  fft_fwd_cfg,
+  float         ak[],       /* LPC's */
+  int           order,
+  MODEL        *model,      /* sinusoidal model parameters for this frame */
+  float         E,          /* energy term */
+  float        *snr,        /* signal to noise ratio for this frame in dB */
+  int           dump,        /* true to dump sample to dump file */
+  int           sim_pf,      /* true to simulate a post filter */
+  int           pf,          /* true to LPC post filter */
+  int           bass_boost,  /* enable LPC filter 0-1khz 3dB boost */
+  float         beta,
+  float         gamma        /* LPC post filter parameters */
+)
+{
+  COMP pw[FFT_ENC];    /* input to FFT for power spectrum */
+  COMP Pw[FFT_ENC];    /* output power spectrum */
+  int i,m;             /* loop variables */
+  int am,bm;           /* limits of current band */
+  float r;             /* no. rads/bin */
+  float Em;            /* energy in band */
+  float Am;            /* spectral amplitude sample */
+  float signal, noise;
+  TIMER_VAR(tstart, tfft, tpw, tpf);
+
+  TIMER_SAMPLE(tstart);
+
+  r = TWO_PI/(FFT_ENC);
+
+  /* Determine DFT of A(exp(jw)) --------------------------------------------*/
+
+  for(i=0; i<FFT_ENC; i++) {
+    pw[i].real = 0.0;
+    pw[i].imag = 0.0;
+  }
+
+  for(i=0; i<=order; i++)
+    pw[i].real = ak[i];
+  kiss_fft(fft_fwd_cfg, (kiss_fft_cpx *)pw, (kiss_fft_cpx *)Pw);
+
+  TIMER_SAMPLE_AND_LOG(tfft, tstart, "      fft");
+
+  /* Determine power spectrum P(w) = E/(A(exp(jw))^2 ------------------------*/
+
+  for(i=0; i<FFT_ENC/2; i++)
+    Pw[i].real = E/(Pw[i].real*Pw[i].real + Pw[i].imag*Pw[i].imag);
+
+  TIMER_SAMPLE_AND_LOG(tpw, tfft, "      Pw");
+
+  if (pf)
+      lpc_post_filter(fft_fwd_cfg, model, Pw, ak, order, dump, beta, gamma, 
bass_boost);
+
+  TIMER_SAMPLE_AND_LOG(tpf, tpw, "      LPC post filter");
+
+  #ifdef DUMP
+  if (dump)
+      dump_Pw(Pw);
+  #endif
+
+  /* Determine magnitudes from P(w) ----------------------------------------*/
+
+  /* when used just by decoder {A} might be all zeroes so init signal
+     and noise to prevent log(0) errors */
+
+  signal = 1E-30; noise = 1E-32;
+
+  for(m=1; m<=model->L; m++) {
+      am = (int)((m - 0.5)*model->Wo/r + 0.5);
+      bm = (int)((m + 0.5)*model->Wo/r + 0.5);
+      Em = 0.0;
+
+      for(i=am; i<bm; i++)
+          Em += Pw[i].real;
+      Am = sqrtf(Em);
+
+      signal += model->A[m]*model->A[m];
+      noise  += (model->A[m] - Am)*(model->A[m] - Am);
+
+      /* This code significantly improves perf of LPC model, in
+         particular when combined with phase0.  The LPC spectrum tends
+         to track just under the peaks of the spectral envelope, and
+         just above nulls.  This algorithm does the reverse to
+         compensate - raising the amplitudes of spectral peaks, while
+         attenuating the null.  This enhances the formants, and
+         supresses the energy between formants. */
+
+      if (sim_pf) {
+          if (Am > model->A[m])
+              Am *= 0.7;
+          if (Am < model->A[m])
+              Am *= 1.4;
+      }
+
+      model->A[m] = Am;
+  }
+  *snr = 10.0*log10f(signal/noise);
+
+  TIMER_SAMPLE_AND_LOG2(tpf, "      rec");
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: encode_Wo()
+  AUTHOR......: David Rowe
+  DATE CREATED: 22/8/2010
+
+  Encodes Wo using a WO_LEVELS quantiser.
+
+\*---------------------------------------------------------------------------*/
+
+int encode_Wo(float Wo)
+{
+    int   index;
+    float Wo_min = TWO_PI/P_MAX;
+    float Wo_max = TWO_PI/P_MIN;
+    float norm;
+
+    norm = (Wo - Wo_min)/(Wo_max - Wo_min);
+    index = floorf(WO_LEVELS * norm + 0.5);
+    if (index < 0 ) index = 0;
+    if (index > (WO_LEVELS-1)) index = WO_LEVELS-1;
+
+    return index;
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: decode_Wo()
+  AUTHOR......: David Rowe
+  DATE CREATED: 22/8/2010
+
+  Decodes Wo using a WO_LEVELS quantiser.
+
+\*---------------------------------------------------------------------------*/
+
+float decode_Wo(int index)
+{
+    float Wo_min = TWO_PI/P_MAX;
+    float Wo_max = TWO_PI/P_MIN;
+    float step;
+    float Wo;
+
+    step = (Wo_max - Wo_min)/WO_LEVELS;
+    Wo   = Wo_min + step*(index);
+
+    return Wo;
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: encode_Wo_dt()
+  AUTHOR......: David Rowe
+  DATE CREATED: 6 Nov 2011
+
+  Encodes Wo difference from last frame.
+
+\*---------------------------------------------------------------------------*/
+
+int encode_Wo_dt(float Wo, float prev_Wo)
+{
+    int   index, mask, max_index, min_index;
+    float Wo_min = TWO_PI/P_MAX;
+    float Wo_max = TWO_PI/P_MIN;
+    float norm;
+
+    norm = (Wo - prev_Wo)/(Wo_max - Wo_min);
+    index = floor(WO_LEVELS * norm + 0.5);
+    //printf("ENC index: %d ", index);
+
+    /* hard limit */
+
+    max_index = (1 << (WO_DT_BITS-1)) - 1;
+    min_index = - (max_index+1);
+    if (index > max_index) index = max_index;
+    if (index < min_index) index = min_index;
+    //printf("max_index: %d  min_index: %d hard index: %d ",
+    //    max_index,  min_index, index);
+
+    /* mask so that only LSB WO_DT_BITS remain, bit WO_DT_BITS is the sign bit 
*/
+
+    mask = ((1 << WO_DT_BITS) - 1);
+    index &= mask;
+    //printf("mask: 0x%x index: 0x%x\n", mask, index);
+
+    return index;
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: decode_Wo_dt()
+  AUTHOR......: David Rowe
+  DATE CREATED: 6 Nov 2011
+
+  Decodes Wo using WO_DT_BITS difference from last frame.
+
+\*---------------------------------------------------------------------------*/
+
+float decode_Wo_dt(int index, float prev_Wo)
+{
+    float Wo_min = TWO_PI/P_MAX;
+    float Wo_max = TWO_PI/P_MIN;
+    float step;
+    float Wo;
+    int   mask;
+
+    /* sign extend index */
+
+    //printf("DEC index: %d ");
+    if (index & (1 << (WO_DT_BITS-1))) {
+       mask = ~((1 << WO_DT_BITS) - 1);
+       index |= mask;
+    }
+    //printf("DEC mask: 0x%x  index: %d \n", mask, index);
+
+    step = (Wo_max - Wo_min)/WO_LEVELS;
+    Wo   = prev_Wo + step*(index);
+
+    /* bit errors can make us go out of range leading to all sorts of
+       probs like seg faults */
+
+    if (Wo > Wo_max) Wo = Wo_max;
+    if (Wo < Wo_min) Wo = Wo_min;
+
+    return Wo;
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: speech_to_uq_lsps()
+  AUTHOR......: David Rowe
+  DATE CREATED: 22/8/2010
+
+  Analyse a windowed frame of time domain speech to determine LPCs
+  which are the converted to LSPs for quantisation and transmission
+  over the channel.
+
+\*---------------------------------------------------------------------------*/
+
+float speech_to_uq_lsps(float lsp[],
+                       float ak[],
+                       float Sn[],
+                       float w[],
+                       int   order
+)
+{
+    int   i, roots;
+    float Wn[M];
+    float R[LPC_MAX+1];
+    float e, E;
+
+    e = 0.0;
+    for(i=0; i<M; i++) {
+       Wn[i] = Sn[i]*w[i];
+       e += Wn[i]*Wn[i];
+    }
+
+    /* trap 0 energy case as LPC analysis will fail */
+
+    if (e == 0.0) {
+       for(i=0; i<order; i++)
+           lsp[i] = (PI/order)*(float)i;
+       return 0.0;
+    }
+
+    autocorrelate(Wn, R, M, order);
+    levinson_durbin(R, ak, order);
+
+    E = 0.0;
+    for(i=0; i<=order; i++)
+       E += ak[i]*R[i];
+
+    /* 15 Hz BW expansion as I can't hear the difference and it may help
+       help occasional fails in the LSP root finding.  Important to do this
+       after energy calculation to avoid -ve energy values.
+    */
+
+    for(i=0; i<=order; i++)
+       ak[i] *= powf(0.994,(float)i);
+
+    roots = lpc_to_lsp(ak, order, lsp, 5, LSP_DELTA1);
+    if (roots != order) {
+       /* if root finding fails use some benign LSP values instead */
        for(i=0; i<order; i++)
            lsp[i] = (PI/order)*(float)i;
     }
 
-    return E;
+    return E;
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: encode_lsps_scalar()
+  AUTHOR......: David Rowe
+  DATE CREATED: 22/8/2010
+
+  Thirty-six bit sclar LSP quantiser. From a vector of unquantised
+  (floating point) LSPs finds the quantised LSP indexes.
+
+\*---------------------------------------------------------------------------*/
+
+void encode_lsps_scalar(int indexes[], float lsp[], int order)
+{
+    int    i,k,m;
+    float  wt[1];
+    float  lsp_hz[LPC_MAX];
+    const float * cb;
+    float se;
+
+    /* convert from radians to Hz so we can use human readable
+       frequencies */
+
+    for(i=0; i<order; i++)
+       lsp_hz[i] = (4000.0/PI)*lsp[i];
+
+    /* scalar quantisers */
+
+    wt[0] = 1.0;
+    for(i=0; i<order; i++) {
+       k = lsp_cb[i].k;
+       m = lsp_cb[i].m;
+       cb = lsp_cb[i].cb;
+       indexes[i] = quantise(cb, &lsp_hz[i], wt, k, m, &se);
+    }
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: decode_lsps_scalar()
+  AUTHOR......: David Rowe
+  DATE CREATED: 22/8/2010
+
+  From a vector of quantised LSP indexes, returns the quantised
+  (floating point) LSPs.
+
+\*---------------------------------------------------------------------------*/
+
+void decode_lsps_scalar(float lsp[], int indexes[], int order)
+{
+    int    i,k;
+    float  lsp_hz[LPC_MAX];
+    const float * cb;
+
+    for(i=0; i<order; i++) {
+       k = lsp_cb[i].k;
+       cb = lsp_cb[i].cb;
+       lsp_hz[i] = cb[indexes[i]*k];
+    }
+
+    /* convert back to radians */
+
+    for(i=0; i<order; i++)
+       lsp[i] = (PI/4000.0)*lsp_hz[i];
+}
+
+
+#ifdef __EXPERIMENTAL__
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: encode_lsps_diff_freq_vq()
+  AUTHOR......: David Rowe
+  DATE CREATED: 15 November 2011
+
+  Twenty-five bit LSP quantiser.  LSPs 1-4 are quantised with scalar
+  LSP differences (in frequency, i.e difference from the previous
+  LSP).  LSPs 5-10 are quantised with a VQ trained generated using
+  vqtrainjnd.c
+
+\*---------------------------------------------------------------------------*/
+
+void encode_lsps_diff_freq_vq(int indexes[], float lsp[], int order)
+{
+    int    i,k,m;
+    float  lsp_hz[LPC_MAX];
+    float lsp__hz[LPC_MAX];
+    float dlsp[LPC_MAX];
+    float dlsp_[LPC_MAX];
+    float wt[LPC_MAX];
+    const float * cb;
+    float se;
+
+    for(i=0; i<LPC_ORD; i++) {
+       wt[i] = 1.0;
+    }
+
+    /* convert from radians to Hz so we can use human readable
+       frequencies */
+
+    for(i=0; i<order; i++)
+       lsp_hz[i] = (4000.0/PI)*lsp[i];
+
+    /* scalar quantisers for LSP differences 1..4 */
+
+    wt[0] = 1.0;
+    for(i=0; i<4; i++) {
+       if (i)
+           dlsp[i] = lsp_hz[i] - lsp__hz[i-1];
+       else
+           dlsp[0] = lsp_hz[0];
+
+       k = lsp_cbd[i].k;
+       m = lsp_cbd[i].m;
+       cb = lsp_cbd[i].cb;
+       indexes[i] = quantise(cb, &dlsp[i], wt, k, m, &se);
+       dlsp_[i] = cb[indexes[i]*k];
+
+       if (i)
+           lsp__hz[i] = lsp__hz[i-1] + dlsp_[i];
+       else
+           lsp__hz[0] = dlsp_[0];
+    }
+
+    /* VQ LSPs 5,6,7,8,9,10 */
+
+    k = lsp_cbjnd[4].k;
+    m = lsp_cbjnd[4].m;
+    cb = lsp_cbjnd[4].cb;
+    indexes[4] = quantise(cb, &lsp_hz[4], &wt[4], k, m, &se);
 }
 
+
 /*---------------------------------------------------------------------------*\
 
-  FUNCTION....: encode_lsps()
+  FUNCTION....: decode_lsps_diff_freq_vq()
   AUTHOR......: David Rowe
-  DATE CREATED: 22/8/2010
+  DATE CREATED: 15 Nov 2011
 
-  From a vector of unquantised (floating point) LSPs finds the quantised
-  LSP indexes.
+  From a vector of quantised LSP indexes, returns the quantised
+  (floating point) LSPs.
 
 \*---------------------------------------------------------------------------*/
 
-void encode_lsps(int indexes[], float lsp[], int order)
+void decode_lsps_diff_freq_vq(float lsp_[], int indexes[], int order)
 {
     int    i,k,m;
-    float  wt[1];
-    float  lsp_hz[LPC_MAX];
+    float  dlsp_[LPC_MAX];
+    float  lsp__hz[LPC_MAX];
     const float * cb;
-    float se = 0.0;
 
-    /* convert from radians to Hz so we can use human readable
-       frequencies */
+    /* scalar LSP differences */
+
+    for(i=0; i<4; i++) {
+       cb = lsp_cbd[i].cb;
+       dlsp_[i] = cb[indexes[i]];
+       if (i)
+           lsp__hz[i] = lsp__hz[i-1] + dlsp_[i];
+       else
+           lsp__hz[0] = dlsp_[0];
+    }
+
+    /* VQ */
+
+    k = lsp_cbjnd[4].k;
+    m = lsp_cbjnd[4].m;
+    cb = lsp_cbjnd[4].cb;
+    for(i=4; i<order; i++)
+       lsp__hz[i] = cb[indexes[4]*k+i-4];
+
+    /* convert back to radians */
 
     for(i=0; i<order; i++)
-       lsp_hz[i] = (4000.0/PI)*lsp[i];
+       lsp_[i] = (PI/4000.0)*lsp__hz[i];
+}
 
-    /* simple uniform scalar quantisers */
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: encode_lsps_diff_time()
+  AUTHOR......: David Rowe
+  DATE CREATED: 12 Sep 2012
+
+  Encode difference from preious frames's LSPs using
+  3,3,2,2,2,2,1,1,1,1 scalar quantisers (18 bits total).
+
+\*---------------------------------------------------------------------------*/
+
+void encode_lsps_diff_time(int indexes[],
+                              float lsps[],
+                              float lsps__prev[],
+                              int order)
+{
+    int    i,k,m;
+    float  lsps_dt[LPC_ORD];
+    float  wt[LPC_MAX];
+    const  float * cb;
+    float  se;
+
+    /* Determine difference in time and convert from radians to Hz so
+       we can use human readable frequencies */
+
+    for(i=0; i<LPC_ORD; i++) {
+       lsps_dt[i] = (4000/PI)*(lsps[i] - lsps__prev[i]);
+    }
+
+    /* scalar quantisers */
 
     wt[0] = 1.0;
     for(i=0; i<order; i++) {
-       k = lsp_cb[i].k;
-       m = lsp_cb[i].m;
-       cb = lsp_cb[i].cb;
-       indexes[i] = quantise(cb, &lsp_hz[i], wt, k, m, &se);
+       k = lsp_cbdt[i].k;
+       m = lsp_cbdt[i].m;
+       cb = lsp_cbdt[i].cb;
+       indexes[i] = quantise(cb, &lsps_dt[i], wt, k, m, &se);
     }
+
 }
 
+
 /*---------------------------------------------------------------------------*\
 
-  FUNCTION....: decode_lsps()
+  FUNCTION....: decode_lsps_diff_time()
   AUTHOR......: David Rowe
-  DATE CREATED: 22/8/2010
+  DATE CREATED: 15 Nov 2011
 
-  From a vector of quantised LSP indexes, returns the quantised
+  From a quantised LSP indexes, returns the quantised
   (floating point) LSPs.
 
 \*---------------------------------------------------------------------------*/
 
-void decode_lsps(float lsp[], int indexes[], int order)
+void decode_lsps_diff_time(
+                             float lsps_[],
+                             int indexes[],
+                             float lsps__prev[],
+                             int order)
 {
-    int    i,k;
-    float  lsp_hz[LPC_MAX];
-    const float * cb;
+    int    i,k,m;
+    const  float * cb;
+
+    for(i=0; i<order; i++)
+       lsps_[i] = lsps__prev[i];
 
     for(i=0; i<order; i++) {
-       k = lsp_cb[i].k;
-       cb = lsp_cb[i].cb;
-       lsp_hz[i] = cb[indexes[i]*k];
+       k = lsp_cbdt[i].k;
+       cb = lsp_cbdt[i].cb;
+       lsps_[i] += (PI/4000.0)*cb[indexes[i]*k];
     }
 
-    /* convert back to radians */
+}
+#endif
 
-    for(i=0; i<order; i++)
-       lsp[i] = (PI/4000.0)*lsp_hz[i];
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: encode_lsps_vq()
+  AUTHOR......: David Rowe
+  DATE CREATED: 15 Feb 2012
+
+  Multi-stage VQ LSP quantiser developed by Jean-Marc Valin.
+
+\*---------------------------------------------------------------------------*/
+
+void encode_lsps_vq(int *indexes, float *x, float *xq, int ndim)
+{
+  int i, n1, n2, n3;
+  float err[LPC_ORD], err2[LPC_ORD], err3[LPC_ORD];
+  float w[LPC_ORD], w2[LPC_ORD], w3[LPC_ORD];
+  const float *codebook1 = lsp_cbjvm[0].cb;
+  const float *codebook2 = lsp_cbjvm[1].cb;
+  const float *codebook3 = lsp_cbjvm[2].cb;
+
+  assert(ndim <= LPC_ORD);
+
+  w[0] = MIN(x[0], x[1]-x[0]);
+  for (i=1;i<ndim-1;i++)
+    w[i] = MIN(x[i]-x[i-1], x[i+1]-x[i]);
+  w[ndim-1] = MIN(x[ndim-1]-x[ndim-2], PI-x[ndim-1]);
+
+  compute_weights(x, w, ndim);
+
+  n1 = find_nearest(codebook1, lsp_cbjvm[0].m, x, ndim);
+
+  for (i=0;i<ndim;i++)
+  {
+    xq[i]  = codebook1[ndim*n1+i];
+    err[i] = x[i] - xq[i];
+  }
+  for (i=0;i<ndim/2;i++)
+  {
+    err2[i] = err[2*i];
+    err3[i] = err[2*i+1];
+    w2[i] = w[2*i];
+    w3[i] = w[2*i+1];
+  }
+  n2 = find_nearest_weighted(codebook2, lsp_cbjvm[1].m, err2, w2, ndim/2);
+  n3 = find_nearest_weighted(codebook3, lsp_cbjvm[2].m, err3, w3, ndim/2);
+
+  indexes[0] = n1;
+  indexes[1] = n2;
+  indexes[2] = n3;
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: decode_lsps_vq()
+  AUTHOR......: David Rowe
+  DATE CREATED: 15 Feb 2012
+
+\*---------------------------------------------------------------------------*/
+
+void decode_lsps_vq(int *indexes, float *xq, int ndim)
+{
+  int i, n1, n2, n3;
+  const float *codebook1 = lsp_cbjvm[0].cb;
+  const float *codebook2 = lsp_cbjvm[1].cb;
+  const float *codebook3 = lsp_cbjvm[2].cb;
+
+  n1 = indexes[0];
+  n2 = indexes[1];
+  n3 = indexes[2];
+
+  for (i=0;i<ndim;i++)
+  {
+    xq[i] = codebook1[ndim*n1+i];
+  }
+  for (i=0;i<ndim/2;i++)
+  {
+    xq[2*i] += codebook2[ndim*n2/2+i];
+    xq[2*i+1] += codebook3[ndim*n3/2+i];
+  }
 }
 
+
 /*---------------------------------------------------------------------------*\
 
   FUNCTION....: bw_expand_lsps()
@@ -692,20 +1548,44 @@ void decode_lsps(float lsp[], int indexes[], int order)
 
   Applies Bandwidth Expansion (BW) to a vector of LSPs.  Prevents any
   two LSPs getting too close together after quantisation.  We know
-  from experiment that LSP quantisation errors < 12.5Hz (25Hz setp
+  from experiment that LSP quantisation errors < 12.5Hz (25Hz step
   size) are inaudible so we use that as the minimum LSP separation.
 
 \*---------------------------------------------------------------------------*/
 
-void bw_expand_lsps(float lsp[],
+void bw_expand_lsps(float lsp[], int order, float min_sep_low, float 
min_sep_high)
+{
+    int i;
+
+    for(i=1; i<4; i++) {
+
+       if ((lsp[i] - lsp[i-1]) < min_sep_low*(PI/4000.0))
+           lsp[i] = lsp[i-1] + min_sep_low*(PI/4000.0);
+
+    }
+
+    /* As quantiser gaps increased, larger BW expansion was required
+       to prevent twinkly noises.  This may need more experiment for
+       different quanstisers.
+    */
+
+    for(i=4; i<order; i++) {
+       if (lsp[i] - lsp[i-1] < min_sep_high*(PI/4000.0))
+           lsp[i] = lsp[i-1] + min_sep_high*(PI/4000.0);
+    }
+}
+
+void bw_expand_lsps2(float lsp[],
                    int   order
 )
 {
     int i;
 
-    for(i=1; i<5; i++) {
-       if (lsp[i] - lsp[i-1] < PI*(12.5/4000.0))
-           lsp[i] = lsp[i-1] + PI*(12.5/4000.0);
+    for(i=1; i<4; i++) {
+
+       if ((lsp[i] - lsp[i-1]) < 100.0*(PI/4000.0))
+           lsp[i] = lsp[i-1] + 100.0*(PI/4000.0);
+
     }
 
     /* As quantiser gaps increased, larger BW expansion was required
@@ -713,16 +1593,84 @@ void bw_expand_lsps(float lsp[],
        different quanstisers.
     */
 
-    for(i=5; i<8; i++) {
-       if (lsp[i] - lsp[i-1] < PI*(25.0/4000.0))
-           lsp[i] = lsp[i-1] + PI*(25.0/4000.0);
+    for(i=4; i<order; i++) {
+       if (lsp[i] - lsp[i-1] < 200.0*(PI/4000.0))
+           lsp[i] = lsp[i-1] + 200.0*(PI/4000.0);
+    }
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: locate_lsps_jnd_steps()
+  AUTHOR......: David Rowe
+  DATE CREATED: 27/10/2011
+
+  Applies a form of Bandwidth Expansion (BW) to a vector of LSPs.
+  Listening tests have determined that "quantising" the position of
+  each LSP to the non-linear steps below introduces a "just noticable
+  difference" in the synthesised speech.
+
+  This operation can be used before quantisation to limit the input
+  data to the quantiser to a number of discrete steps.
+
+  This operation can also be used during quantisation as a form of
+  hysteresis in the calculation of quantiser error.  For example if
+  the quantiser target of lsp1 is 500 Hz, candidate vectors with lsp1
+  of 515 and 495 Hz sound effectively the same.
+
+\*---------------------------------------------------------------------------*/
+
+void locate_lsps_jnd_steps(float lsps[], int order)
+{
+    int   i;
+    float lsp_hz, step;
+
+    assert(order == 10);
+
+    /* quantise to 25Hz steps */
+
+    step = 25;
+    for(i=0; i<2; i++) {
+       lsp_hz = lsps[i]*4000.0/PI;
+       lsp_hz = floorf(lsp_hz/step + 0.5)*step;
+       lsps[i] = lsp_hz*PI/4000.0;
+       if (i) {
+           if (lsps[i] == lsps[i-1])
+               lsps[i]   += step*PI/4000.0;
+
+       }
+    }
+
+    /* quantise to 50Hz steps */
+
+    step = 50;
+    for(i=2; i<4; i++) {
+       lsp_hz = lsps[i]*4000.0/PI;
+       lsp_hz = floorf(lsp_hz/step + 0.5)*step;
+       lsps[i] = lsp_hz*PI/4000.0;
+       if (i) {
+           if (lsps[i] == lsps[i-1])
+               lsps[i] += step*PI/4000.0;
+
+       }
     }
-    for(i=8; i<order; i++) {
-       if (lsp[i] - lsp[i-1] < PI*(75.0/4000.0))
-           lsp[i] = lsp[i-1] + PI*(75.0/4000.0);
+
+    /* quantise to 100Hz steps */
+
+    step = 100;
+    for(i=4; i<10; i++) {
+       lsp_hz = lsps[i]*4000.0/PI;
+       lsp_hz = floorf(lsp_hz/step + 0.5)*step;
+       lsps[i] = lsp_hz*PI/4000.0;
+       if (i) {
+           if (lsps[i] == lsps[i-1])
+               lsps[i] += step*PI/4000.0;
+
+       }
     }
 }
 
+
 /*---------------------------------------------------------------------------*\
 
   FUNCTION....: apply_lpc_correction()
@@ -758,9 +1706,9 @@ int encode_energy(float e)
     float e_max = E_MAX_DB;
     float norm;
 
-    e = 10.0*log10(e);
+    e = 10.0*log10f(e);
     norm = (e - e_min)/(e_max - e_min);
-    index = floor(E_LEVELS * norm + 0.5);
+    index = floorf(E_LEVELS * norm + 0.5);
     if (index < 0 ) index = 0;
     if (index > (E_LEVELS-1)) index = E_LEVELS-1;
 
@@ -773,7 +1721,7 @@ int encode_energy(float e)
   AUTHOR......: David Rowe
   DATE CREATED: 22/8/2010
 
-  Decodes energy using a WO_BITS quantiser.
+  Decodes energy using a E_LEVELS quantiser.
 
 \*---------------------------------------------------------------------------*/
 
@@ -786,39 +1734,12 @@ float decode_energy(int index)
 
     step = (e_max - e_min)/E_LEVELS;
     e    = e_min + step*(index);
-    e    = pow(10.0,e/10.0);
+    e    = powf(10.0,e/10.0);
 
     return e;
 }
 
-/*---------------------------------------------------------------------------*\
-
-  FUNCTION....: encode_amplitudes()
-  AUTHOR......: David Rowe
-  DATE CREATED: 22/8/2010
-
-  Time domain LPC is used model the amplitudes which are then
-  converted to LSPs and quantised.  So we don't actually encode the
-  amplitudes directly, rather we derive an equivalent representation
-  from the time domain speech.
-
-\*---------------------------------------------------------------------------*/
-
-void encode_amplitudes(int    lsp_indexes[],
-                      int   *energy_index,
-                      MODEL *model,
-                      float  Sn[],
-                      float  w[])
-{
-    float lsps[LPC_ORD];
-    float ak[LPC_ORD+1];
-    float e;
-
-    e = speech_to_uq_lsps(lsps, ak, Sn, w, LPC_ORD);
-    encode_lsps(lsp_indexes, lsps, LPC_ORD);
-    *energy_index = encode_energy(e);
-}
-
+#ifdef NOT_USED
 /*---------------------------------------------------------------------------*\
 
   FUNCTION....: decode_amplitudes()
@@ -830,7 +1751,8 @@ void encode_amplitudes(int    lsp_indexes[],
 
 \*---------------------------------------------------------------------------*/
 
-float decode_amplitudes(MODEL *model,
+float decode_amplitudes(kiss_fft_cfg  fft_fwd_cfg,
+                       MODEL *model,
                        float  ak[],
                        int    lsp_indexes[],
                        int    energy_index,
@@ -840,12 +1762,209 @@ float decode_amplitudes(MODEL *model,
 {
     float snr;
 
-    decode_lsps(lsps, lsp_indexes, LPC_ORD);
+    decode_lsps_scalar(lsps, lsp_indexes, LPC_ORD);
     bw_expand_lsps(lsps, LPC_ORD);
     lsp_to_lpc(lsps, ak, LPC_ORD);
     *e = decode_energy(energy_index);
-    aks_to_M2(ak, LPC_ORD, model, *e, &snr, 1);
+    aks_to_M2(ak, LPC_ORD, model, *e, &snr, 1, 0, 0, 1);
     apply_lpc_correction(model);
 
     return snr;
 }
+#endif
+
+static float ge_coeff[2] = {0.8, 0.9};
+
+void compute_weights2(const float *x, const float *xp, float *w, int ndim)
+{
+  w[0] = 30;
+  w[1] = 1;
+  if (x[1]<0)
+  {
+     w[0] *= .6;
+     w[1] *= .3;
+  }
+  if (x[1]<-10)
+  {
+     w[0] *= .3;
+     w[1] *= .3;
+  }
+  /* Higher weight if pitch is stable */
+  if (fabsf(x[0]-xp[0])<.2)
+  {
+     w[0] *= 2;
+     w[1] *= 1.5;
+  } else if (fabsf(x[0]-xp[0])>.5) /* Lower if not stable */
+  {
+     w[0] *= .5;
+  }
+
+  /* Lower weight for low energy */
+  if (x[1] < xp[1]-10)
+  {
+     w[1] *= .5;
+  }
+  if (x[1] < xp[1]-20)
+  {
+     w[1] *= .5;
+  }
+
+  //w[0] = 30;
+  //w[1] = 1;
+
+  /* Square the weights because it's applied on the squared error */
+  w[0] *= w[0];
+  w[1] *= w[1];
+
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: quantise_WoE()
+  AUTHOR......: Jean-Marc Valin & David Rowe
+  DATE CREATED: 29 Feb 2012
+
+  Experimental joint Wo and LPC energy vector quantiser developed by
+  Jean-Marc Valin.  Exploits correlations between the difference in
+  the log pitch and log energy from frame to frame.  For example
+  both the pitch and energy tend to only change by small amounts
+  during voiced speech, however it is important that these changes be
+  coded carefully.  During unvoiced speech they both change a lot but
+  the ear is less sensitve to errors so coarser quantisation is OK.
+
+  The ear is sensitive to log energy and loq pitch so we quantise in
+  these domains.  That way the error measure used to quantise the
+  values is close to way the ear senses errors.
+
+  See http://jmspeex.livejournal.com/10446.html
+
+\*---------------------------------------------------------------------------*/
+
+void quantise_WoE(MODEL *model, float *e, float xq[])
+{
+  int          i, n1;
+  float        x[2];
+  float        err[2];
+  float        w[2];
+  const float *codebook1 = ge_cb[0].cb;
+  int          nb_entries = ge_cb[0].m;
+  int          ndim = ge_cb[0].k;
+  float Wo_min = TWO_PI/P_MAX;
+  float Wo_max = TWO_PI/P_MIN;
+
+  x[0] = log10f((model->Wo/PI)*4000.0/50.0)/log10f(2);
+  x[1] = 10.0*log10f(1e-4 + *e);
+
+  compute_weights2(x, xq, w, ndim);
+  for (i=0;i<ndim;i++)
+    err[i] = x[i]-ge_coeff[i]*xq[i];
+  n1 = find_nearest_weighted(codebook1, nb_entries, err, w, ndim);
+
+  for (i=0;i<ndim;i++)
+  {
+    xq[i] = ge_coeff[i]*xq[i] + codebook1[ndim*n1+i];
+    err[i] -= codebook1[ndim*n1+i];
+  }
+
+  /*
+    x = log2(4000*Wo/(PI*50));
+    2^x = 4000*Wo/(PI*50)
+    Wo = (2^x)*(PI*50)/4000;
+  */
+
+  model->Wo = powf(2.0, xq[0])*(PI*50.0)/4000.0;
+
+  /* bit errors can make us go out of range leading to all sorts of
+     probs like seg faults */
+
+  if (model->Wo > Wo_max) model->Wo = Wo_max;
+  if (model->Wo < Wo_min) model->Wo = Wo_min;
+
+  model->L  = PI/model->Wo; /* if we quantise Wo re-compute L */
+
+  *e = powf(10.0, xq[1]/10.0);
+}
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: encode_WoE()
+  AUTHOR......: Jean-Marc Valin & David Rowe
+  DATE CREATED: 11 May 2012
+
+  Joint Wo and LPC energy vector quantiser developed my Jean-Marc
+  Valin.  Returns index, and updated states xq[].
+
+\*---------------------------------------------------------------------------*/
+
+int encode_WoE(MODEL *model, float e, float xq[])
+{
+  int          i, n1;
+  float        x[2];
+  float        err[2];
+  float        w[2];
+  const float *codebook1 = ge_cb[0].cb;
+  int          nb_entries = ge_cb[0].m;
+  int          ndim = ge_cb[0].k;
+
+  assert((1<<WO_E_BITS) == nb_entries);
+
+  if (e < 0.0) e = 0;  /* occasional small negative energies due LPC round off 
I guess */
+
+  x[0] = log10f((model->Wo/PI)*4000.0/50.0)/log10f(2);
+  x[1] = 10.0*log10f(1e-4 + e);
+
+  compute_weights2(x, xq, w, ndim);
+  for (i=0;i<ndim;i++)
+    err[i] = x[i]-ge_coeff[i]*xq[i];
+  n1 = find_nearest_weighted(codebook1, nb_entries, err, w, ndim);
+
+  for (i=0;i<ndim;i++)
+  {
+    xq[i] = ge_coeff[i]*xq[i] + codebook1[ndim*n1+i];
+    err[i] -= codebook1[ndim*n1+i];
+  }
+
+  //printf("enc: %f %f (%f)(%f) \n", xq[0], xq[1], e, 10.0*log10(1e-4 + e));
+  return n1;
+}
+
+
+/*---------------------------------------------------------------------------*\
+
+  FUNCTION....: decode_WoE()
+  AUTHOR......: Jean-Marc Valin & David Rowe
+  DATE CREATED: 11 May 2012
+
+  Joint Wo and LPC energy vector quantiser developed my Jean-Marc
+  Valin.  Given index and states xq[], returns Wo & E, and updates
+  states xq[].
+
+\*---------------------------------------------------------------------------*/
+
+void decode_WoE(MODEL *model, float *e, float xq[], int n1)
+{
+  int          i;
+  const float *codebook1 = ge_cb[0].cb;
+  int          ndim = ge_cb[0].k;
+  float Wo_min = TWO_PI/P_MAX;
+  float Wo_max = TWO_PI/P_MIN;
+
+  for (i=0;i<ndim;i++)
+  {
+    xq[i] = ge_coeff[i]*xq[i] + codebook1[ndim*n1+i];
+  }
+
+  //printf("dec: %f %f\n", xq[0], xq[1]);
+  model->Wo = powf(2.0, xq[0])*(PI*50.0)/4000.0;
+
+  /* bit errors can make us go out of range leading to all sorts of
+     probs like seg faults */
+
+  if (model->Wo > Wo_max) model->Wo = Wo_max;
+  if (model->Wo < Wo_min) model->Wo = Wo_min;
+
+  model->L  = PI/model->Wo; /* if we quantise Wo re-compute L */
+
+  *e = powf(10.0, xq[1]/10.0);
+}
+
diff --git a/gr-vocoder/lib/codec2/quantise.h b/gr-vocoder/lib/codec2/quantise.h
index 42b05f4..0932d9d 100644
--- a/gr-vocoder/lib/codec2/quantise.h
+++ b/gr-vocoder/lib/codec2/quantise.h
@@ -26,47 +26,82 @@
 #ifndef __QUANTISE__
 #define __QUANTISE__
 
-#define WO_BITS   7
-#define WO_LEVELS (1<<WO_BITS)
-#define E_BITS    5
-#define E_LEVELS  (1<<E_BITS)
-#define E_MIN_DB -10.0
-#define E_MAX_DB  40.0
+#include "kiss_fft.h"
+
+#define WO_BITS     7
+#define WO_LEVELS   (1<<WO_BITS)
+#define WO_DT_BITS  3
+
+#define E_BITS      5
+#define E_LEVELS    (1<<E_BITS)
+#define E_MIN_DB   -10.0
+#define E_MAX_DB    40.0
+
+#define LSP_SCALAR_INDEXES    10
+#define LSPD_SCALAR_INDEXES    10
+#define LSP_PRED_VQ_INDEXES    3
+#define LSP_DIFF_FREQ_INDEXES  5
+#define LSP_DIFF_TIME_BITS     7
+
+#define LSPDT_ALL   0
+#define LSPDT_LOW   1
+#define LSPDT_HIGH  2
+
+#define WO_E_BITS   8
+
+#define LPCPF_GAMMA 0.5
+#define LPCPF_BETA  0.2
 
 void quantise_init();
 float lpc_model_amplitudes(float Sn[], float w[], MODEL *model, int order,
                           int lsp,float ak[]);
-void aks_to_M2(float ak[], int order, MODEL *model, float E, float *snr,
-              int dump);
+void aks_to_M2(kiss_fft_cfg fft_fwd_cfg, float ak[], int order, MODEL *model,
+              float E, float *snr, int dump, int sim_pf,
+               int pf, int bass_boost, float beta, float gamma);
 
 int   encode_Wo(float Wo);
 float decode_Wo(int index);
-
-void encode_lsps(int indexes[], float lsp[], int order);
-void decode_lsps(float lsp[], int indexes[], int order);
-void lspd_quantise(float lsp[], float lsp_[], int order);
-void lspdvq_quantise(float lsp[], float lsp_[], int order);
+int   encode_Wo_dt(float Wo, float prev_Wo);
+float decode_Wo_dt(int index, float prev_Wo);
+void  encode_lsps_scalar(int indexes[], float lsp[], int order);
+void  decode_lsps_scalar(float lsp[], int indexes[], int order);
+void  encode_lspds_scalar(int indexes[], float lsp[], int order);
+void  decode_lspds_scalar(float lsp[], int indexes[], int order);
+void  encode_lsps_diff_freq_vq(int indexes[], float lsp[], int order);
+void  decode_lsps_diff_freq_vq(float lsp_[], int indexes[], int order);
+void  encode_lsps_diff_time(int indexes[],
+                           float lsp[],
+                           float lsp__prev[],
+                           int order);
+void decode_lsps_diff_time(float lsp_[],
+                          int indexes[],
+                          float lsp__prev[],
+                          int order);
+
+void encode_lsps_vq(int *indexes, float *x, float *xq, int ndim);
+void decode_lsps_vq(int *indexes, float *xq, int ndim);
+
+long quantise(const float * cb, float vec[], float w[], int k, int m, float 
*se);
+void lspvq_quantise(float lsp[], float lsp_[], int order);
+void lspjnd_quantise(float lsp[], float lsp_[], int order);
+void lspdt_quantise(float lsps[], float lsps_[], float lsps__prev[], int mode);
+void lspjvm_quantise(float lsps[], float lsps_[], int order);
+void lspanssi_quantise(float lsps[], float lsps_[], int order, int 
mbest_entries);
+
+void quantise_WoE(MODEL *model, float *e, float xq[]);
+int  encode_WoE(MODEL *model, float e, float xq[]);
+void decode_WoE(MODEL *model, float *e, float xq[], int n1);
 
 int encode_energy(float e);
 float decode_energy(int index);
 
-void encode_amplitudes(int    lsp_indexes[],
-                      int   *energy_index,
-                      MODEL *model,
-                      float  Sn[],
-                      float  w[]);
-
-float decode_amplitudes(MODEL *model,
-                       float  ak[],
-                       int lsp_indexes[],
-                       int energy_index,
-                       float  lsps[],
-                       float *e);
-
 void pack(unsigned char * bits, unsigned int *nbit, int index, unsigned int 
index_bits);
 int  unpack(const unsigned char * bits, unsigned int *nbit, unsigned int 
index_bits);
 
 int lsp_bits(int i);
+int lspd_bits(int i);
+int lspdt_bits(int i);
+int lsp_pred_vq_bits(int i);
 
 void apply_lpc_correction(MODEL *model);
 float speech_to_uq_lsps(float lsp[],
@@ -75,9 +110,15 @@ float speech_to_uq_lsps(float lsp[],
                        float w[],
                        int   order
                        );
-void bw_expand_lsps(float lsp[],
-                   int   order
-                   );
-void decode_lsps(float lsp[], int indexes[], int order);
+int check_lsp_order(float lsp[], int lpc_order);
+void bw_expand_lsps(float lsp[], int order, float min_sep_low, float 
min_sep_high);
+void bw_expand_lsps2(float lsp[], int order);
+void locate_lsps_jnd_steps(float lsp[], int order);
+float decode_amplitudes(MODEL *model,
+                       float  ak[],
+                       int    lsp_indexes[],
+                       int    energy_index,
+                       float  lsps[],
+                       float *e);
 
 #endif
diff --git a/gr-vocoder/lib/codec2/rn.h b/gr-vocoder/lib/codec2/rn.h
new file mode 100644
index 0000000..934f458
--- /dev/null
+++ b/gr-vocoder/lib/codec2/rn.h
@@ -0,0 +1,964 @@
+/* Generated by rn_file() Octave function */
+
+const float gt_alpha5_root[]={
+  2.86997e-05,
+  2.2286e-05,
+  1.82863e-05,
+  1.42303e-05,
+  1.04905e-05,
+  6.70859e-06,
+  3.05918e-06,
+  -6.22187e-07,
+  -4.22748e-06,
+  -7.85603e-06,
+  -1.14317e-05,
+  -1.50227e-05,
+  -1.85712e-05,
+  -2.21275e-05,
+  -2.56455e-05,
+  -2.91642e-05,
+  -3.26453e-05,
+  -3.61199e-05,
+  -3.95556e-05,
+  -4.29778e-05,
+  -4.63581e-05,
+  -4.97179e-05,
+  -5.3032e-05,
+  -5.63184e-05,
+  -5.95548e-05,
+  -6.27565e-05,
+  -6.59032e-05,
+  -6.90085e-05,
+  -7.20538e-05,
+  -7.50509e-05,
+  -7.7983e-05,
+  -8.08605e-05,
+  -8.36678e-05,
+  -8.64141e-05,
+  -8.9085e-05,
+  -9.16888e-05,
+  -9.42119e-05,
+  -9.66619e-05,
+  -9.9026e-05,
+  -0.000101311,
+  -0.000103505,
+  -0.000105614,
+  -0.000107627,
+  -0.00010955,
+  -0.000111372,
+  -0.000113099,
+  -0.00011472,
+  -0.000116241,
+  -0.000117652,
+  -0.000118959,
+  -0.000120152,
+  -0.000121235,
+  -0.000122201,
+  -0.000123053,
+  -0.000123784,
+  -0.000124397,
+  -0.000124884,
+  -0.00012525,
+  -0.000125487,
+  -0.000125598,
+  -0.000125578,
+  -0.000125428,
+  -0.000125145,
+  -0.000124729,
+  -0.000124185,
+  -0.000123518,
+  -0.000122709,
+  -0.000121766,
+  -0.000120685,
+  -0.000119471,
+  -0.000118119,
+  -0.000116633,
+  -0.000115009,
+  -0.000113251,
+  -0.000111356,
+  -0.000109326,
+  -0.00010716,
+  -0.00010486,
+  -0.000102424,
+  -9.98553e-05,
+  -9.71528e-05,
+  -9.43199e-05,
+  -9.13551e-05,
+  -8.82623e-05,
+  -8.50404e-05,
+  -8.16936e-05,
+  -7.82211e-05,
+  -7.46271e-05,
+  -7.09109e-05,
+  -6.70773e-05,
+  -6.31256e-05,
+  -5.90607e-05,
+  -5.48823e-05,
+  -5.05954e-05,
+  -4.62001e-05,
+  -4.17016e-05,
+  -3.71002e-05,
+  -3.24015e-05,
+  -2.7606e-05,
+  -2.27195e-05,
+  -1.77428e-05,
+  -1.2682e-05,
+  -7.53795e-06,
+  -2.31702e-06,
+  2.97965e-06,
+  8.34567e-06,
+  1.37796e-05,
+  1.9275e-05,
+  2.483e-05,
+  3.04382e-05,
+  3.60975e-05,
+  4.18011e-05,
+  4.75467e-05,
+  5.33273e-05,
+  5.91403e-05,
+  6.49787e-05,
+  7.08393e-05,
+  7.67152e-05,
+  8.26029e-05,
+  8.84957e-05,
+  9.43895e-05,
+  0.000100278,
+  0.000106157,
+  0.00011202,
+  0.000117864,
+  0.000123681,
+  0.000129468,
+  0.000135218,
+  0.000140929,
+  0.000146583,
+  0.000152183,
+  0.000157725,
+  0.000163202,
+  0.000168608,
+  0.000173938,
+  0.000179183,
+  0.00018434,
+  0.0001894,
+  0.00019436,
+  0.000199211,
+  0.000203949,
+  0.000208568,
+  0.000213063,
+  0.000217426,
+  0.000221654,
+  0.00022574,
+  0.000229678,
+  0.000233463,
+  0.000237089,
+  0.000240551,
+  0.000243843,
+  0.000246959,
+  0.000249895,
+  0.000252644,
+  0.000255202,
+  0.000257562,
+  0.000259721,
+  0.000261672,
+  0.000263411,
+  0.000264933,
+  0.000266234,
+  0.000267308,
+  0.000268152,
+  0.00026876,
+  0.000269128,
+  0.000269253,
+  0.000269129,
+  0.000268754,
+  0.000268123,
+  0.000267232,
+  0.000266079,
+  0.000264658,
+  0.000262968,
+  0.000261006,
+  0.000258767,
+  0.000256251,
+  0.000253453,
+  0.000250373,
+  0.000247007,
+  0.000243354,
+  0.000239412,
+  0.00023518,
+  0.000230655,
+  0.000225837,
+  0.000220723,
+  0.000215314,
+  0.000209608,
+  0.000203605,
+  0.000197304,
+  0.000190706,
+  0.000183812,
+  0.000176621,
+  0.000169145,
+  0.000161363,
+  0.000153275,
+  0.000144895,
+  0.000136224,
+  0.000127266,
+  0.00011802,
+  0.000108491,
+  9.8679e-05,
+  8.85877e-05,
+  7.82196e-05,
+  6.7577e-05,
+  5.66636e-05,
+  4.54822e-05,
+  3.40369e-05,
+  2.23311e-05,
+  1.03695e-05,
+  -1.844e-06,
+  -1.43041e-05,
+  -2.70061e-05,
+  -3.99444e-05,
+  -5.31139e-05,
+  -6.65082e-05,
+  -8.01218e-05,
+  -9.39481e-05,
+  -0.000107981,
+  -0.000122213,
+  -0.000136638,
+  -0.000151248,
+  -0.000166036,
+  -0.000180995,
+  -0.000196115,
+  -0.00021139,
+  -0.000226811,
+  -0.000242369,
+  -0.000258056,
+  -0.000273861,
+  -0.000289776,
+  -0.000305792,
+  -0.000321898,
+  -0.000338084,
+  -0.000354342,
+  -0.00037066,
+  -0.000387027,
+  -0.000403434,
+  -0.00041987,
+  -0.000436324,
+  -0.000452784,
+  -0.00046924,
+  -0.00048568,
+  -0.000502091,
+  -0.000518464,
+  -0.000534785,
+  -0.000551043,
+  -0.000567225,
+  -0.000583319,
+  -0.000599314,
+  -0.000615196,
+  -0.000630955,
+  -0.000646575,
+  -0.000662049,
+  -0.000677361,
+  -0.000692506,
+  -0.000707464,
+  -0.00072229,
+  -0.000736922,
+  -0.000751266,
+  -0.000765372,
+  -0.000779217,
+  -0.000792798,
+  -0.000806094,
+  -0.000819098,
+  -0.000831793,
+  -0.000844168,
+  -0.000856207,
+  -0.000867898,
+  -0.000879227,
+  -0.00089018,
+  -0.000900744,
+  -0.000910906,
+  -0.000920652,
+  -0.00092997,
+  -0.000938844,
+  -0.000947263,
+  -0.000955214,
+  -0.000962682,
+  -0.000969654,
+  -0.000976119,
+  -0.000982062,
+  -0.00098747,
+  -0.000992332,
+  -0.000996634,
+  -0.00100036,
+  -0.00100351,
+  -0.00100606,
+  -0.001008,
+  -0.00100932,
+  -0.00101,
+  -0.00101005,
+  -0.00100943,
+  -0.00100816,
+  -0.0010062,
+  -0.00100356,
+  -0.00100021,
+  -0.000996162,
+  -0.000991392,
+  -0.000985892,
+  -0.000979654,
+  -0.000972668,
+  -0.000964925,
+  -0.000956415,
+  -0.000947131,
+  -0.000937065,
+  -0.000926208,
+  -0.000914552,
+  -0.00090209,
+  -0.000888816,
+  -0.000874721,
+  -0.0008598,
+  -0.000844046,
+  -0.000827453,
+  -0.000810015,
+  -0.000791726,
+  -0.000772581,
+  -0.000752576,
+  -0.000731704,
+  -0.000709965,
+  -0.00068735,
+  -0.000663865,
+  -0.000639509,
+  -0.000614269,
+  -0.000588146,
+  -0.000561139,
+  -0.000533246,
+  -0.000504468,
+  -0.000474802,
+  -0.000444251,
+  -0.000412813,
+  -0.00038049,
+  -0.000347281,
+  -0.000313189,
+  -0.000278215,
+  -0.000242361,
+  -0.000205629,
+  -0.000168024,
+  -0.000129546,
+  -9.02024e-05,
+  -4.99954e-05,
+  -8.93026e-06,
+  3.2988e-05,
+  7.57537e-05,
+  0.000119361,
+  0.000163804,
+  0.000209075,
+  0.000255167,
+  0.000302074,
+  0.000349786,
+  0.000398297,
+  0.000447596,
+  0.000497676,
+  0.000548526,
+  0.000600136,
+  0.000652497,
+  0.000705598,
+  0.000759427,
+  0.000813972,
+  0.000869223,
+  0.000925166,
+  0.000981789,
+  0.00103908,
+  0.00109702,
+  0.00115561,
+  0.00121482,
+  0.00127464,
+  0.00133505,
+  0.00139605,
+  0.00145762,
+  0.00151973,
+  0.00158238,
+  0.00164555,
+  0.00170922,
+  0.00177337,
+  0.00183799,
+  0.00190305,
+  0.00196854,
+  0.00203445,
+  0.00210075,
+  0.00216742,
+  0.00223445,
+  0.00230181,
+  0.00236949,
+  0.00243747,
+  0.00250572,
+  0.00257423,
+  0.00264296,
+  0.00271192,
+  0.00278107,
+  0.00285039,
+  0.00291986,
+  0.00298947,
+  0.00305918,
+  0.00312898,
+  0.00319884,
+  0.00326874,
+  0.00333866,
+  0.00340857,
+  0.00347846,
+  0.00354831,
+  0.00361808,
+  0.00368775,
+  0.00375731,
+  0.00382673,
+  0.00389599,
+  0.00396506,
+  0.00403393,
+  0.00410256,
+  0.00417094,
+  0.00423904,
+  0.00430684,
+  0.00437431,
+  0.00444144,
+  0.0045082,
+  0.00457457,
+  0.00464052,
+  0.00470603,
+  0.00477108,
+  0.00483565,
+  0.00489972,
+  0.00496325,
+  0.00502623,
+  0.00508865,
+  0.00515046,
+  0.00521166,
+  0.00527223,
+  0.00533213,
+  0.00539135,
+  0.00544987,
+  0.00550766,
+  0.00556472,
+  0.005621,
+  0.00567651,
+  0.00573121,
+  0.00578508,
+  0.00583811,
+  0.00589028,
+  0.00594157,
+  0.00599196,
+  0.00604143,
+  0.00608996,
+  0.00613754,
+  0.00618415,
+  0.00622977,
+  0.00627439,
+  0.00631798,
+  0.00636054,
+  0.00640204,
+  0.0064425,
+  0.00648186,
+  0.00652009,
+  0.00655722,
+  0.00659322,
+  0.00662808,
+  0.00666179,
+  0.00669433,
+  0.00672571,
+  0.00675589,
+  0.00678488,
+  0.00681266,
+  0.00683921,
+  0.00686454,
+  0.00688863,
+  0.00691147,
+  0.00693305,
+  0.00695336,
+  0.0069724,
+  0.00699016,
+  0.00700663,
+  0.00702181,
+  0.00703569,
+  0.00704826,
+  0.00705952,
+  0.00706947,
+  0.00707809,
+  0.0070854,
+  0.00709138,
+  0.00709604,
+  0.00709937,
+  0.00710136,
+  0.00710203,
+  0.00710136,
+  0.00709937,
+  0.00709604,
+  0.00709138,
+  0.0070854,
+  0.00707809,
+  0.00706947,
+  0.00705952,
+  0.00704826,
+  0.00703569,
+  0.00702181,
+  0.00700663,
+  0.00699016,
+  0.0069724,
+  0.00695336,
+  0.00693305,
+  0.00691147,
+  0.00688863,
+  0.00686454,
+  0.00683921,
+  0.00681266,
+  0.00678488,
+  0.00675589,
+  0.00672571,
+  0.00669433,
+  0.00666179,
+  0.00662808,
+  0.00659322,
+  0.00655722,
+  0.00652009,
+  0.00648186,
+  0.0064425,
+  0.00640204,
+  0.00636054,
+  0.00631798,
+  0.00627439,
+  0.00622977,
+  0.00618415,
+  0.00613754,
+  0.00608996,
+  0.00604143,
+  0.00599196,
+  0.00594157,
+  0.00589028,
+  0.00583811,
+  0.00578508,
+  0.00573121,
+  0.00567651,
+  0.005621,
+  0.00556472,
+  0.00550766,
+  0.00544987,
+  0.00539135,
+  0.00533213,
+  0.00527223,
+  0.00521166,
+  0.00515046,
+  0.00508865,
+  0.00502623,
+  0.00496325,
+  0.00489972,
+  0.00483565,
+  0.00477108,
+  0.00470603,
+  0.00464052,
+  0.00457457,
+  0.0045082,
+  0.00444144,
+  0.00437431,
+  0.00430684,
+  0.00423904,
+  0.00417094,
+  0.00410256,
+  0.00403393,
+  0.00396506,
+  0.00389599,
+  0.00382673,
+  0.00375731,
+  0.00368775,
+  0.00361808,
+  0.00354831,
+  0.00347846,
+  0.00340857,
+  0.00333866,
+  0.00326874,
+  0.00319884,
+  0.00312898,
+  0.00305918,
+  0.00298947,
+  0.00291986,
+  0.00285039,
+  0.00278107,
+  0.00271192,
+  0.00264296,
+  0.00257423,
+  0.00250572,
+  0.00243747,
+  0.00236949,
+  0.00230181,
+  0.00223445,
+  0.00216742,
+  0.00210075,
+  0.00203445,
+  0.00196854,
+  0.00190305,
+  0.00183799,
+  0.00177337,
+  0.00170922,
+  0.00164555,
+  0.00158238,
+  0.00151973,
+  0.00145762,
+  0.00139605,
+  0.00133505,
+  0.00127464,
+  0.00121482,
+  0.00115561,
+  0.00109702,
+  0.00103908,
+  0.000981789,
+  0.000925166,
+  0.000869223,
+  0.000813972,
+  0.000759427,
+  0.000705598,
+  0.000652497,
+  0.000600136,
+  0.000548526,
+  0.000497676,
+  0.000447596,
+  0.000398297,
+  0.000349786,
+  0.000302074,
+  0.000255167,
+  0.000209075,
+  0.000163804,
+  0.000119361,
+  7.57537e-05,
+  3.2988e-05,
+  -8.93026e-06,
+  -4.99954e-05,
+  -9.02024e-05,
+  -0.000129546,
+  -0.000168024,
+  -0.000205629,
+  -0.000242361,
+  -0.000278215,
+  -0.000313189,
+  -0.000347281,
+  -0.00038049,
+  -0.000412813,
+  -0.000444251,
+  -0.000474802,
+  -0.000504468,
+  -0.000533246,
+  -0.000561139,
+  -0.000588146,
+  -0.000614269,
+  -0.000639509,
+  -0.000663865,
+  -0.00068735,
+  -0.000709965,
+  -0.000731704,
+  -0.000752576,
+  -0.000772581,
+  -0.000791726,
+  -0.000810015,
+  -0.000827453,
+  -0.000844046,
+  -0.0008598,
+  -0.000874721,
+  -0.000888816,
+  -0.00090209,
+  -0.000914552,
+  -0.000926208,
+  -0.000937065,
+  -0.000947131,
+  -0.000956415,
+  -0.000964925,
+  -0.000972668,
+  -0.000979654,
+  -0.000985892,
+  -0.000991392,
+  -0.000996162,
+  -0.00100021,
+  -0.00100356,
+  -0.0010062,
+  -0.00100816,
+  -0.00100943,
+  -0.00101005,
+  -0.00101,
+  -0.00100932,
+  -0.001008,
+  -0.00100606,
+  -0.00100351,
+  -0.00100036,
+  -0.000996634,
+  -0.000992332,
+  -0.00098747,
+  -0.000982062,
+  -0.000976119,
+  -0.000969654,
+  -0.000962682,
+  -0.000955214,
+  -0.000947263,
+  -0.000938844,
+  -0.00092997,
+  -0.000920652,
+  -0.000910906,
+  -0.000900744,
+  -0.00089018,
+  -0.000879227,
+  -0.000867898,
+  -0.000856207,
+  -0.000844168,
+  -0.000831793,
+  -0.000819098,
+  -0.000806094,
+  -0.000792798,
+  -0.000779217,
+  -0.000765372,
+  -0.000751266,
+  -0.000736922,
+  -0.00072229,
+  -0.000707464,
+  -0.000692506,
+  -0.000677361,
+  -0.000662049,
+  -0.000646575,
+  -0.000630955,
+  -0.000615196,
+  -0.000599314,
+  -0.000583319,
+  -0.000567225,
+  -0.000551043,
+  -0.000534785,
+  -0.000518464,
+  -0.000502091,
+  -0.00048568,
+  -0.00046924,
+  -0.000452784,
+  -0.000436324,
+  -0.00041987,
+  -0.000403434,
+  -0.000387027,
+  -0.00037066,
+  -0.000354342,
+  -0.000338084,
+  -0.000321898,
+  -0.000305792,
+  -0.000289776,
+  -0.000273861,
+  -0.000258056,
+  -0.000242369,
+  -0.000226811,
+  -0.00021139,
+  -0.000196115,
+  -0.000180995,
+  -0.000166036,
+  -0.000151248,
+  -0.000136638,
+  -0.000122213,
+  -0.000107981,
+  -9.39481e-05,
+  -8.01218e-05,
+  -6.65082e-05,
+  -5.31139e-05,
+  -3.99444e-05,
+  -2.70061e-05,
+  -1.43041e-05,
+  -1.844e-06,
+  1.03695e-05,
+  2.23311e-05,
+  3.40369e-05,
+  4.54822e-05,
+  5.66636e-05,
+  6.7577e-05,
+  7.82196e-05,
+  8.85877e-05,
+  9.8679e-05,
+  0.000108491,
+  0.00011802,
+  0.000127266,
+  0.000136224,
+  0.000144895,
+  0.000153275,
+  0.000161363,
+  0.000169145,
+  0.000176621,
+  0.000183812,
+  0.000190706,
+  0.000197304,
+  0.000203605,
+  0.000209608,
+  0.000215314,
+  0.000220723,
+  0.000225837,
+  0.000230655,
+  0.00023518,
+  0.000239412,
+  0.000243354,
+  0.000247007,
+  0.000250373,
+  0.000253453,
+  0.000256251,
+  0.000258767,
+  0.000261006,
+  0.000262968,
+  0.000264658,
+  0.000266079,
+  0.000267232,
+  0.000268123,
+  0.000268754,
+  0.000269129,
+  0.000269253,
+  0.000269128,
+  0.00026876,
+  0.000268152,
+  0.000267308,
+  0.000266234,
+  0.000264933,
+  0.000263411,
+  0.000261672,
+  0.000259721,
+  0.000257562,
+  0.000255202,
+  0.000252644,
+  0.000249895,
+  0.000246959,
+  0.000243843,
+  0.000240551,
+  0.000237089,
+  0.000233463,
+  0.000229678,
+  0.00022574,
+  0.000221654,
+  0.000217426,
+  0.000213063,
+  0.000208568,
+  0.000203949,
+  0.000199211,
+  0.00019436,
+  0.0001894,
+  0.00018434,
+  0.000179183,
+  0.000173938,
+  0.000168608,
+  0.000163202,
+  0.000157725,
+  0.000152183,
+  0.000146583,
+  0.000140929,
+  0.000135218,
+  0.000129468,
+  0.000123681,
+  0.000117864,
+  0.00011202,
+  0.000106157,
+  0.000100278,
+  9.43895e-05,
+  8.84957e-05,
+  8.26029e-05,
+  7.67152e-05,
+  7.08393e-05,
+  6.49787e-05,
+  5.91403e-05,
+  5.33273e-05,
+  4.75467e-05,
+  4.18011e-05,
+  3.60975e-05,
+  3.04382e-05,
+  2.483e-05,
+  1.9275e-05,
+  1.37796e-05,
+  8.34567e-06,
+  2.97965e-06,
+  -2.31702e-06,
+  -7.53795e-06,
+  -1.2682e-05,
+  -1.77428e-05,
+  -2.27195e-05,
+  -2.7606e-05,
+  -3.24015e-05,
+  -3.71002e-05,
+  -4.17016e-05,
+  -4.62001e-05,
+  -5.05954e-05,
+  -5.48823e-05,
+  -5.90607e-05,
+  -6.31256e-05,
+  -6.70773e-05,
+  -7.09109e-05,
+  -7.46271e-05,
+  -7.82211e-05,
+  -8.16936e-05,
+  -8.50404e-05,
+  -8.82623e-05,
+  -9.13551e-05,
+  -9.43199e-05,
+  -9.71528e-05,
+  -9.98553e-05,
+  -0.000102424,
+  -0.00010486,
+  -0.00010716,
+  -0.000109326,
+  -0.000111356,
+  -0.000113251,
+  -0.000115009,
+  -0.000116633,
+  -0.000118119,
+  -0.000119471,
+  -0.000120685,
+  -0.000121766,
+  -0.000122709,
+  -0.000123518,
+  -0.000124185,
+  -0.000124729,
+  -0.000125145,
+  -0.000125428,
+  -0.000125578,
+  -0.000125598,
+  -0.000125487,
+  -0.00012525,
+  -0.000124884,
+  -0.000124397,
+  -0.000123784,
+  -0.000123053,
+  -0.000122201,
+  -0.000121235,
+  -0.000120152,
+  -0.000118959,
+  -0.000117652,
+  -0.000116241,
+  -0.00011472,
+  -0.000113099,
+  -0.000111372,
+  -0.00010955,
+  -0.000107627,
+  -0.000105614,
+  -0.000103505,
+  -0.000101311,
+  -9.9026e-05,
+  -9.66619e-05,
+  -9.42119e-05,
+  -9.16888e-05,
+  -8.9085e-05,
+  -8.64141e-05,
+  -8.36678e-05,
+  -8.08605e-05,
+  -7.7983e-05,
+  -7.50509e-05,
+  -7.20538e-05,
+  -6.90085e-05,
+  -6.59032e-05,
+  -6.27565e-05,
+  -5.95548e-05,
+  -5.63184e-05,
+  -5.3032e-05,
+  -4.97179e-05,
+  -4.63581e-05,
+  -4.29778e-05,
+  -3.95556e-05,
+  -3.61199e-05,
+  -3.26453e-05,
+  -2.91642e-05,
+  -2.56455e-05,
+  -2.21275e-05,
+  -1.85712e-05,
+  -1.50227e-05,
+  -1.14317e-05,
+  -7.85603e-06,
+  -4.22748e-06,
+  -6.22187e-07,
+  3.05918e-06,
+  6.70859e-06,
+  1.04905e-05,
+  1.42303e-05,
+  1.82863e-05,
+  2.2286e-05
+};
diff --git a/gr-vocoder/lib/codec2/sim.sh b/gr-vocoder/lib/codec2/sim.sh
deleted file mode 100755
index 10152d9..0000000
--- a/gr-vocoder/lib/codec2/sim.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-# sim.sh
-# David Rowe 10 Sep 2009
-
-# Process a source file using the codec 2 simulation.  An output
-# speech file is generated for each major processing step, from the
-# unquantised siusoidal model to fully quantised.  This way we can
-# listen to the effect of each processing step.  Use listensim.sh to
-# test the output files.
-
-../src/c2sim ../raw/$1.raw -o $1_uq.raw
-../src/c2sim ../raw/$1.raw --phase0 -o $1_phase0.raw --postfilter
-../src/c2sim ../raw/$1.raw --lpc 10 -o $1_lpc10.raw --postfilter
-../src/c2sim ../raw/$1.raw --phase0 --lpc 10 -o $1_phase0_lpc10.raw 
--postfilter
-../src/c2sim ../raw/$1.raw --phase0 --lpc 10 --dec -o $1_phase0_lpc10_dec.raw 
--postfilter
-../src/c2sim ../raw/$1.raw --phase0 --lpc 10 --lsp --dec -o 
$1_phase0_lsp_dec.raw --postfilter
-
-#../src/c2sim ../raw/$1.raw --lpc 10 --lsp -o $1_lsp.raw
-#../src/c2sim ../raw/$1.raw --phase0 --lpc 10 -o $1_phase0_lpc10.raw 
--postfilter
-#../src/c2sim ../raw/$1.raw --phase0 --lpc 10 --lsp -o $1_phase0_lsp.raw 
--postfilter
-#../src/c2sim ../raw/$1.raw --phase0 --lpc 10 --lsp -o $1_phase0_lsp_dec.raw 
--postfilter --dec
-
diff --git a/gr-vocoder/lib/codec2/sine.c b/gr-vocoder/lib/codec2/sine.c
index b30f9ab..be4df00 100644
--- a/gr-vocoder/lib/codec2/sine.c
+++ b/gr-vocoder/lib/codec2/sine.c
@@ -37,7 +37,7 @@
 
 #include "defines.h"
 #include "sine.h"
-#include "fft.h"
+#include "kiss_fft.h"
 
 #define HPF_BETA 0.125
 
@@ -66,9 +66,10 @@ void hs_pitch_refinement(MODEL *model, COMP Sw[], float 
pmin, float pmax,
 
 \*---------------------------------------------------------------------------*/
 
-void make_analysis_window(float w[],COMP W[])
+void make_analysis_window(kiss_fft_cfg fft_fwd_cfg, float w[], COMP W[])
 {
   float m;
+  COMP  wshift[FFT_ENC];
   COMP  temp;
   int   i,j;
 
@@ -87,7 +88,7 @@ void make_analysis_window(float w[],COMP W[])
   for(i=0; i<M/2-NW/2; i++)
     w[i] = 0.0;
   for(i=M/2-NW/2,j=0; i<M/2+NW/2; i++,j++) {
-    w[i] = 0.5 - 0.5*cos(TWO_PI*j/(NW-1));
+    w[i] = 0.5 - 0.5*cosf(TWO_PI*j/(NW-1));
     m += w[i]*w[i];
   }
   for(i=M/2+NW/2; i<M; i++)
@@ -96,7 +97,7 @@ void make_analysis_window(float w[],COMP W[])
   /* Normalise - makes freq domain amplitude estimation straight
      forward */
 
-  m = 1.0/sqrt(m*FFT_ENC);
+  m = 1.0/sqrtf(m*FFT_ENC);
   for(i=0; i<M; i++) {
     w[i] *= m;
   }
@@ -123,15 +124,15 @@ void make_analysis_window(float w[],COMP W[])
   */
 
   for(i=0; i<FFT_ENC; i++) {
-    W[i].real = 0.0;
-    W[i].imag = 0.0;
+    wshift[i].real = 0.0;
+    wshift[i].imag = 0.0;
   }
   for(i=0; i<NW/2; i++)
-    W[i].real = w[i+M/2];
+    wshift[i].real = w[i+M/2];
   for(i=FFT_ENC-NW/2,j=M/2-NW/2; i<FFT_ENC; i++,j++)
-    W[i].real = w[j];
+   wshift[i].real = w[j];
 
-  fft(&W[0].real,FFT_ENC,-1);         /* "Numerical Recipes in C" FFT */
+  kiss_fft(fft_fwd_cfg, (kiss_fft_cpx *)wshift, (kiss_fft_cpx *)W);
 
   /*
       Re-arrange W[] to be symmetrical about FFT_ENC/2.  Makes later
@@ -198,13 +199,14 @@ float hpf(float x, float states[])
 
 \*---------------------------------------------------------------------------*/
 
-void dft_speech(COMP Sw[], float Sn[], float w[])
+void dft_speech(kiss_fft_cfg fft_fwd_cfg, COMP Sw[], float Sn[], float w[])
 {
-  int i;
+  int  i;
+  COMP sw[FFT_ENC];
 
   for(i=0; i<FFT_ENC; i++) {
-    Sw[i].real = 0.0;
-    Sw[i].imag = 0.0;
+    sw[i].real = 0.0;
+    sw[i].imag = 0.0;
   }
 
   /* Centre analysis window on time axis, we need to arrange input
@@ -213,14 +215,14 @@ void dft_speech(COMP Sw[], float Sn[], float w[])
   /* move 2nd half to start of FFT input vector */
 
   for(i=0; i<NW/2; i++)
-    Sw[i].real = Sn[i+M/2]*w[i+M/2];
+    sw[i].real = Sn[i+M/2]*w[i+M/2];
 
   /* move 1st half to end of FFT input vector */
 
   for(i=0; i<NW/2; i++)
-    Sw[FFT_ENC-NW/2+i].real = Sn[i+M/2-NW/2]*w[i+M/2-NW/2];
+    sw[FFT_ENC-NW/2+i].real = Sn[i+M/2-NW/2]*w[i+M/2-NW/2];
 
-  fft(&Sw[0].real,FFT_ENC,-1);
+  kiss_fft(fft_fwd_cfg, (kiss_fft_cpx *)sw, (kiss_fft_cpx *)Sw);
 }
 
 /*---------------------------------------------------------------------------*\
@@ -287,7 +289,7 @@ void hs_pitch_refinement(MODEL *model, COMP Sw[], float 
pmin, float pmax, float
   float Wo;            /* current "test" fundamental freq. */
   float Wom;           /* Wo that maximises E */
   float Em;            /* mamimum energy */
-  float r;             /* number of rads/bin */
+  float r, one_on_r;   /* number of rads/bin */
   float p;             /* current pitch */
 
   /* Initialisation */
@@ -296,6 +298,7 @@ void hs_pitch_refinement(MODEL *model, COMP Sw[], float 
pmin, float pmax, float
   Wom = model->Wo;
   Em = 0.0;
   r = TWO_PI/FFT_ENC;
+  one_on_r = 1.0/r;
 
   /* Determine harmonic sum for a range of Wo values */
 
@@ -304,12 +307,10 @@ void hs_pitch_refinement(MODEL *model, COMP Sw[], float 
pmin, float pmax, float
     Wo = TWO_PI/p;
 
     /* Sum harmonic magnitudes */
-
     for(m=1; m<=model->L; m++) {
-      b = floor(m*Wo/r + 0.5);
-      E += Sw[b].real*Sw[b].real + Sw[b].imag*Sw[b].imag;
+        b = (int)(m*Wo*one_on_r + 0.5);
+        E += Sw[b].real*Sw[b].real + Sw[b].imag*Sw[b].imag;
     }
-
     /* Compare to see if this is a maximum */
 
     if (E > Em) {
@@ -331,40 +332,45 @@ void hs_pitch_refinement(MODEL *model, COMP Sw[], float 
pmin, float pmax, float
 
 \*---------------------------------------------------------------------------*/
 
-void estimate_amplitudes(MODEL *model, COMP Sw[], COMP W[])
+void estimate_amplitudes(MODEL *model, COMP Sw[], COMP W[], int est_phase)
 {
   int   i,m;           /* loop variables */
   int   am,bm;         /* bounds of current harmonic */
   int   b;             /* DFT bin of centre of current harmonic */
   float den;           /* denominator of amplitude expression */
-  float r;             /* number of rads/bin */
+  float r, one_on_r;   /* number of rads/bin */
   int   offset;
   COMP  Am;
 
   r = TWO_PI/FFT_ENC;
+  one_on_r = 1.0/r;
 
   for(m=1; m<=model->L; m++) {
     den = 0.0;
-    am = floor((m - 0.5)*model->Wo/r + 0.5);
-    bm = floor((m + 0.5)*model->Wo/r + 0.5);
-    b = floor(m*model->Wo/r + 0.5);
+    am = (int)((m - 0.5)*model->Wo*one_on_r + 0.5);
+    bm = (int)((m + 0.5)*model->Wo*one_on_r + 0.5);
+    b = (int)(m*model->Wo/r + 0.5);
 
     /* Estimate ampltude of harmonic */
 
     den = 0.0;
     Am.real = Am.imag = 0.0;
+    offset = FFT_ENC/2 - (int)(m*model->Wo*one_on_r + 0.5);
     for(i=am; i<bm; i++) {
       den += Sw[i].real*Sw[i].real + Sw[i].imag*Sw[i].imag;
-      offset = i + FFT_ENC/2 - floor(m*model->Wo/r + 0.5);
-      Am.real += Sw[i].real*W[offset].real;
-      Am.imag += Sw[i].imag*W[offset].real;
+      Am.real += Sw[i].real*W[i + offset].real;
+      Am.imag += Sw[i].imag*W[i + offset].real;
     }
 
-    model->A[m] = sqrt(den);
+    model->A[m] = sqrtf(den);
+
+    if (est_phase) {
 
-    /* Estimate phase of harmonic */
+        /* Estimate phase of harmonic, this is expensive in CPU for
+           embedded devicesso we make it an option */
 
-    model->phi[m] = atan2(Sw[b].imag,Sw[b].real);
+        model->phi[m] = atan2(Sw[b].imag,Sw[b].real);
+    }
   }
 }
 
@@ -396,9 +402,9 @@ float est_voicing_mbe(
     float Wo;
     float sig, snr;
     float elow, ehigh, eratio;
-    float dF0, sixty;
+    float sixty;
 
-    sig = 0.0;
+    sig = 1E-4;
     for(l=1; l<=model->L/4; l++) {
        sig += model->A[l]*model->A[l];
     }
@@ -410,7 +416,7 @@ float est_voicing_mbe(
     }
 
     Wo = model->Wo;
-    error = 0.0;
+    error = 1E-4;
 
     /* Just test across the harmonics in the first 1000 Hz (L/4) */
 
@@ -423,11 +429,11 @@ float est_voicing_mbe(
 
        /* Estimate amplitude of harmonic assuming harmonic is totally voiced */
 
+        offset = FFT_ENC/2 - l*Wo*FFT_ENC/TWO_PI + 0.5;
        for(m=al; m<bl; m++) {
-           offset = FFT_ENC/2 + m - l*Wo*FFT_ENC/TWO_PI + 0.5;
-           Am.real += Sw[m].real*W[offset].real + Sw[m].imag*W[offset].imag;
-           Am.imag += Sw[m].imag*W[offset].real - Sw[m].real*W[offset].imag;
-           den += W[offset].real*W[offset].real + 
W[offset].imag*W[offset].imag;
+           Am.real += Sw[m].real*W[offset+m].real;
+           Am.imag += Sw[m].imag*W[offset+m].real;
+           den += W[offset+m].real*W[offset+m].real;
         }
 
         Am.real = Am.real/den;
@@ -435,10 +441,10 @@ float est_voicing_mbe(
 
         /* Determine error between estimated harmonic and original */
 
+        offset = FFT_ENC/2 - l*Wo*FFT_ENC/TWO_PI + 0.5;
         for(m=al; m<bl; m++) {
-           offset = FFT_ENC/2 + m - l*Wo*FFT_ENC/TWO_PI + 0.5;
-           Sw_[m].real = Am.real*W[offset].real - Am.imag*W[offset].imag;
-           Sw_[m].imag = Am.real*W[offset].imag + Am.imag*W[offset].real;
+           Sw_[m].real = Am.real*W[offset+m].real;
+           Sw_[m].imag = Am.imag*W[offset+m].real;
            Ew[m].real = Sw[m].real - Sw_[m].real;
            Ew[m].imag = Sw[m].imag - Sw_[m].imag;
            error += Ew[m].real*Ew[m].real;
@@ -446,7 +452,7 @@ float est_voicing_mbe(
        }
     }
 
-    snr = 10.0*log10(sig/error);
+    snr = 10.0*log10f(sig/error);
     if (snr > V_THRESH)
        model->voiced = 1;
     else
@@ -455,21 +461,20 @@ float est_voicing_mbe(
     /* post processing, helps clean up some voicing errors ------------------*/
 
     /*
-       Determine the ratio of low freancy to high frequency energy,
+       Determine the ratio of low freqency to high frequency energy,
        voiced speech tends to be dominated by low frequency energy,
        unvoiced by high frequency. This measure can be used to
        determine if we have made any gross errors.
     */
 
-    elow = ehigh = 0.0;
+    elow = ehigh = 1E-4;
     for(l=1; l<=model->L/2; l++) {
        elow += model->A[l]*model->A[l];
     }
     for(l=model->L/2; l<=model->L; l++) {
        ehigh += model->A[l]*model->A[l];
     }
-    eratio = 10.0*log10(elow/ehigh);
-    dF0 = 0.0;
+    eratio = 10.0*log10f(elow/ehigh);
 
     /* Look for Type 1 errors, strongly V speech that has been
        accidentally declared UV */
@@ -485,16 +490,10 @@ float est_voicing_mbe(
        if (eratio < -10.0)
            model->voiced = 0;
 
-       /* If pitch is jumping about it's likely this is UV */
-
-       dF0 = (model->Wo - prev_Wo)*FS/TWO_PI;
-       if (fabs(dF0) > 15.0)
-           model->voiced = 0;
-
        /* A common source of Type 2 errors is the pitch estimator
           gives a low (50Hz) estimate for UV speech, which gives a
           good match with noise due to the close harmoonic spacing.
-          These errors are much more common than people with 50Hz
+          These errors are much more common than people with 50Hz3
           pitch, so we have just a small eratio threshold. */
 
        sixty = 60.0*TWO_PI/FS;
@@ -551,6 +550,7 @@ void make_synthesis_window(float Pn[])
 \*---------------------------------------------------------------------------*/
 
 void synthesise(
+  kiss_fft_cfg fft_inv_cfg,
   float  Sn_[],                /* time domain synthesised signal              
*/
   MODEL *model,                /* ptr to model parameters for this frame      
*/
   float  Pn[],         /* time domain Parzen window                   */
@@ -559,10 +559,10 @@ void synthesise(
 {
     int   i,l,j,b;     /* loop variables */
     COMP  Sw_[FFT_DEC];        /* DFT of synthesised signal */
+    COMP  sw_[FFT_DEC];        /* synthesised signal */
 
     if (shift) {
        /* Update memories */
-
        for(i=0; i<N-1; i++) {
            Sn_[i] = Sn_[i+N];
        }
@@ -578,7 +578,7 @@ void synthesise(
       Nov 2010 - found that synthesis using time domain cos() functions
       gives better results for synthesis frames greater than 10ms.  Inverse
       FFT synthesis using a 512 pt FFT works well for 10ms window.  I think
-      (but am not sure) that the problem is realted to the quantisation of
+      (but am not sure) that the problem is related to the quantisation of
       the harmonic frequencies to the FFT bin size, e.g. there is a
       8000/512 Hz step between FFT bins.  For some reason this makes
       the speech from longer frame > 10ms sound poor.  The effect can also
@@ -592,19 +592,21 @@ void synthesise(
 #ifdef FFT_SYNTHESIS
     /* Now set up frequency domain synthesised speech */
     for(l=1; l<=model->L; l++) {
-       b = floor(l*model->Wo*FFT_DEC/TWO_PI + 0.5);
+    //for(l=model->L/2; l<=model->L; l++) {
+    //for(l=1; l<=model->L/4; l++) {
+       b = (int)(l*model->Wo*FFT_DEC/TWO_PI + 0.5);
        if (b > ((FFT_DEC/2)-1)) {
                b = (FFT_DEC/2)-1;
        }
-       Sw_[b].real = model->A[l]*cos(model->phi[l]);
-       Sw_[b].imag = model->A[l]*sin(model->phi[l]);
+       Sw_[b].real = model->A[l]*cosf(model->phi[l]);
+       Sw_[b].imag = model->A[l]*sinf(model->phi[l]);
        Sw_[FFT_DEC-b].real = Sw_[b].real;
        Sw_[FFT_DEC-b].imag = -Sw_[b].imag;
     }
 
     /* Perform inverse DFT */
 
-    fft(&Sw_[0].real,FFT_DEC,1);
+    kiss_fft(fft_inv_cfg, (kiss_fft_cpx *)Sw_, (kiss_fft_cpx *)sw_);
 #else
     /*
        Direct time domain synthesis using the cos() function.  Works
@@ -625,14 +627,22 @@ void synthesise(
     /* Overlap add to previous samples */
 
     for(i=0; i<N-1; i++) {
-       Sn_[i] += Sw_[FFT_DEC-N+1+i].real*Pn[i];
+       Sn_[i] += sw_[FFT_DEC-N+1+i].real*Pn[i];
     }
 
     if (shift)
        for(i=N-1,j=0; i<2*N; i++,j++)
-           Sn_[i] = Sw_[j].real*Pn[i];
+           Sn_[i] = sw_[j].real*Pn[i];
     else
        for(i=N-1,j=0; i<2*N; i++,j++)
-           Sn_[i] += Sw_[j].real*Pn[i];
+           Sn_[i] += sw_[j].real*Pn[i];
+}
+
+
+static unsigned long next = 1;
+
+int codec2_rand(void) {
+    next = next * 1103515245 + 12345;
+    return((unsigned)(next/65536) % 32768);
 }
 
diff --git a/gr-vocoder/lib/codec2/sine.h b/gr-vocoder/lib/codec2/sine.h
index f223e2a..3a3ce46 100644
--- a/gr-vocoder/lib/codec2/sine.h
+++ b/gr-vocoder/lib/codec2/sine.h
@@ -30,15 +30,19 @@
 
 #include "defines.h"
 #include "comp.h"
+#include "kiss_fft.h"
 
-void make_analysis_window(float w[], COMP W[]);
+void make_analysis_window(kiss_fft_cfg fft_fwd_cfg, float w[], COMP W[]);
 float hpf(float x, float states[]);
-void dft_speech(COMP Sw[], float Sn[], float w[]);
+void dft_speech(kiss_fft_cfg fft_fwd_cfg, COMP Sw[], float Sn[], float w[]);
 void two_stage_pitch_refinement(MODEL *model, COMP Sw[]);
-void estimate_amplitudes(MODEL *model, COMP Sw[], COMP W[]);
+void estimate_amplitudes(MODEL *model, COMP Sw[], COMP W[], int est_phase);
 float est_voicing_mbe(MODEL *model, COMP Sw[], COMP W[], COMP Sw_[],COMP Ew[],
                      float prev_Wo);
 void make_synthesis_window(float Pn[]);
-void synthesise(float Sn_[], MODEL *model, float Pn[], int shift);
+void synthesise(kiss_fft_cfg fft_inv_cfg, float Sn_[], MODEL *model, float 
Pn[], int shift);
+
+#define CODEC2_RAND_MAX 32767
+int codec2_rand(void);
 
 #endif
diff --git a/gr-vocoder/lib/codec2/test_bits.h 
b/gr-vocoder/lib/codec2/test_bits.h
new file mode 100644
index 0000000..d1c01a0
--- /dev/null
+++ b/gr-vocoder/lib/codec2/test_bits.h
@@ -0,0 +1,164 @@
+/* Generated by test_bits_file() Octave function */
+
+const int test_bits[]={
+  0,
+  1,
+  1,
+  0,
+  0,
+  0,
+  1,
+  1,
+  0,
+  0,
+  1,
+  0,
+  1,
+  0,
+  0,
+  1,
+  0,
+  1,
+  1,
+  0,
+  0,
+  1,
+  1,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  1,
+  1,
+  1,
+  0,
+  1,
+  1,
+  0,
+  0,
+  1,
+  1,
+  1,
+  0,
+  1,
+  1,
+  0,
+  1,
+  1,
+  1,
+  1,
+  1,
+  0,
+  0,
+  1,
+  0,
+  0,
+  1,
+  1,
+  1,
+  0,
+  0,
+  1,
+  1,
+  1,
+  0,
+  0,
+  0,
+  0,
+  1,
+  1,
+  1,
+  0,
+  0,
+  1,
+  1,
+  1,
+  1,
+  1,
+  0,
+  1,
+  1,
+  1,
+  0,
+  0,
+  1,
+  1,
+  0,
+  1,
+  1,
+  1,
+  1,
+  1,
+  1,
+  1,
+  0,
+  0,
+  1,
+  1,
+  0,
+  1,
+  0,
+  0,
+  0,
+  1,
+  1,
+  1,
+  0,
+  0,
+  0,
+  0,
+  1,
+  1,
+  1,
+  1,
+  1,
+  0,
+  1,
+  1,
+  0,
+  0,
+  0,
+  1,
+  0,
+  0,
+  1,
+  0,
+  0,
+  0,
+  1,
+  0,
+  0,
+  1,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  1,
+  1,
+  0,
+  1,
+  1,
+  0,
+  0,
+  0,
+  1,
+  0,
+  1,
+  1,
+  1,
+  0,
+  1
+};



reply via email to

[Prev in Thread] Current Thread [Next in Thread]